我尝试查询时SQL语法出错

时间:2014-09-19 10:33:28

标签: php mysqli format

我有一个很大的(和愚蠢的)问题,一个简单的sql插入查询(mysqli),我已经使用过这种格式没有错误,但现在没有工作..

请帮我找到问题..

//Get admin form details
$a_user = $_POST["a_user"];
$a_pass = $_POST["a_pass"];
$a_pin = $_POST["a_pin"];

if($a_user == "$admin_username" && $a_pass == "$admin_password" && $a_pin == "$admin_pin"):
    $keygen = md5(microtime().rand());
    $mysqli->query("INSERT INTO keys (keygen) VALUES ('$keygen')") or die(mysqli_error($mysqli));
    $mysqli->close;
else:
    header("Location: ?page=admin&error=1");
endif;

这是错误:

  

错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在密钥(keygen)附近使用VALUES(' 85faa7f618e433819d7e5ca57076377c')'在第1行

1 个答案:

答案 0 :(得分:6)

keys是MySQL保留字http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

将其包裹在反引号中或使用其他名称。

INSERT INTO `keys`

旁注:

MD5已经过时了,如果您打算将其用于密码用途,则会被视为已损坏。

使用CRYPT_BLOWFISH或PHP 5.5' password_hash()功能 对于PHP< 5.5使用password_hash() compatibility pack