我找不到原因错误 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)。

  • 记住; 更多更少 提供解决方案所需的时间。