我找不到原因错误 1064 | MySQL
I can't find cause error 1064 | MySQL
我写了 SQL 命令。 MySQL 说第 36 行有一个错误 #1064(第 36 行是空的 space/divider)。我知道基本的 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' . "\r\n";
也许这里有错误? $_hsync_usr 是 table 名字。
$_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 中的保留字。所以它给出错误 #1064,因为查询不能包含保留的作品。
与流行的看法相反:
hex
不是 MySQL 保留字。
HEX()
是一个 函数 用于十六进制文字
附加参考 http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
"Return a hexadecimal representation of a decimal or string value"
您可以使用该词,但如果需要,则需要用刻度线包裹。
旁注:但在这种情况下不是,因为它没有用作函数。
例如:
RastDlaka,
`hEx`) VALUES (
'$_hsync_ime',
此外,如果您有任何未被引用的字符串值,那么您将需要像对待其他字符串一样引用它们。
即:
$_hsync_rastdlaka,
'$_hsync_hEx')");
此外,您当前的代码对 SQL injection. Use mysqli
with prepared statements, or PDO with prepared statements 开放。
编辑: 至于真正的问题是什么:
Lol, problem was in input field, I used id instead value for radio buttons. Thanks! I'll check link for prepared statments. It looks a bit complicated. – SilvioCro"
OP 注意事项:请 post 所有与问题相关的代码,它将排除所有潜在的猜测,包括我在内的其他人将能够(或至少帮助)找到完整的解决方案。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
同时检查查询错误:
它将在开发过程中为您提供帮助 var_dump()
并查看您的 HTML 源代码(以及您的控制台,如果使用 JS/Ajax)。
- 记住; 更多,更少 提供解决方案所需的时间。
我写了 SQL 命令。 MySQL 说第 36 行有一个错误 #1064(第 36 行是空的 space/divider)。我知道基本的 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' . "\r\n";
也许这里有错误? $_hsync_usr 是 table 名字。
$_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 中的保留字。所以它给出错误 #1064,因为查询不能包含保留的作品。
与流行的看法相反:
hex
不是 MySQL 保留字。
HEX()
是一个 函数 用于十六进制文字
附加参考 http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
"Return a hexadecimal representation of a decimal or string value"
您可以使用该词,但如果需要,则需要用刻度线包裹。
旁注:但在这种情况下不是,因为它没有用作函数。
例如:
RastDlaka,
`hEx`) VALUES (
'$_hsync_ime',
此外,如果您有任何未被引用的字符串值,那么您将需要像对待其他字符串一样引用它们。
即:
$_hsync_rastdlaka,
'$_hsync_hEx')");
此外,您当前的代码对 SQL injection. Use mysqli
with prepared statements, or PDO with prepared statements 开放。
编辑: 至于真正的问题是什么:
Lol, problem was in input field, I used id instead value for radio buttons. Thanks! I'll check link for prepared statments. It looks a bit complicated. – SilvioCro"
OP 注意事项:请 post 所有与问题相关的代码,它将排除所有潜在的猜测,包括我在内的其他人将能够(或至少帮助)找到完整的解决方案。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
同时检查查询错误:
它将在开发过程中为您提供帮助 var_dump()
并查看您的 HTML 源代码(以及您的控制台,如果使用 JS/Ajax)。
- 记住; 更多,更少 提供解决方案所需的时间。