我可以';t查找原因错误1064|MySQL


I can't find cause error 1064 | MySQL

我编写了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' . "'r'n";

也许这里有错误$_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,因为查询不能包含保留的作品。