我编写了SQL命令。MySQL说第36行有一个错误#1064(第36行是空格/分隔符)。我知道基本的MySQL,但我找不到原因。
// TRENUTNI MOD REGISTRACIJE
$_hsync_rezultat = $_hsync_konekcija->query("SELECT Registracija FROM $_hsync_srv");
$_hsync_podatci = $_hsync_rezultat->fetch_assoc();
$_hsync_registracija = $_hsync_podatci["Registracija"];
// LINE 36
// NOVI ID KORISNIKA
$_hsync_rezultat = $_hsync_konekcija->query("SELECT Korisnika FROM $_hsync_srv");
$_hsync_podatci = $_hsync_rezultat->fetch_assoc();
$_hsync_id = $_hsync_podatci["Korisnika"] + 1;
$_hsync_od = 'From: haswell.samp@hotmail.com' . "rn";
也许这里有错误$_hsyncusr是表名。
$_hsync_konekcija->query("INSERT INTO $_hsync_usr (
Ime,
ID,
Registriran,
Zaporka,
ZaporkaMD5,
IP,
GPCI,
Mail,
Spol,
Godine,
Skin,
MailNotf,
Datum,
Vrijeme,
Visina,
OstalaMasa,
MisicnaMasa,
MasaSala,
Zeludac,
Metabolizam,
PotrebaH2O,
Opijanje,
Drogiranje,
Udarac,
RastDlaka,
hEx) VALUES (
'$_hsync_ime',
$_hsync_id,
$_hsync_reg,
'nista',
'$_hsync_zaporka_hash',
'nista',
'nista',
'$_hsync_mail',
$_hsync_spol,
$_hsync_godine,
$_hsync_skin,
$_hsync_mail_notf,
'$_hsync_datum',
'$_hsync_vrijeme',
$_hsync_visina,
$_hsync_omasa,
$_hsync_mmasa,
$_hsync_msala,
$_hsync_zeludac,
$_hsync_metabolizam,
$_hsync_potrebah2o,
$_hsync_opijanje,
$_hsync_drogiranje,
$_hsync_udarac,
$_hsync_rastdlaka,
$_hsync_hEx)");
我查了一下。我有点困惑。
与流行观点相反:
hex
不是MySQL的保留字。
- https://dev.mysql.com/doc/refman/5.5/en/keywords.html
HEX()
是一个函数,用于十六进制文字
- https://dev.mysql.com/doc/refman/5.7/en/hexadecimal-literals.html
附加参考http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
"返回十进制或字符串值的十六进制表示"
你可以使用这个词,但如果需要的话,它需要用记号包装。
旁注:但在这种情况下,它不是,因为它没有被用作一个函数。
例如:
RastDlaka,
`hEx`) VALUES (
'$_hsync_ime',
另外,如果您有任何字符串值没有被引用,那么您将需要像对其他字符串值一样对它们进行引用。
即:
$_hsync_rastdlaka,
'$_hsync_hEx')");
此外,您当前的代码对SQL注入是开放的。将mysqli
与准备好的语句一起使用,或将PDO与<strong]准备好的报表>一同使用。
编辑:至于真正的问题是什么:
Lol,问题出在输入字段,我用id代替单选按钮的值。谢谢我会检查准备好的统计数据的链接。这看起来有点复杂SilvioCro"
OP注意:请发布与问题相关的所有代码,这将省去所有潜在的猜测,包括我在内的其他人将能够(或至少有助于)找到完整的解决方案。
将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:显示错误只能在暂存中进行,而不能在生产中进行。
还要根据查询检查错误:
- http://php.net/manual/en/mysqli.error.php
它将在开发过程中帮助您,var_dump()
和查看HTML源代码(如果使用JS/Ajax,还可以查看控制台)。
- 记住我们必须处理的越多,提供解决方案所需的时间就越短
hEx是MySQL中的保留字。所以它给出了错误#1064,因为查询不能包含保留的作品。