在INSERT上获取MySQL错误代码1064

时间:2013-06-12 19:21:37

标签: php mysql

我已经倾倒了这个并且无法找到可能导致错误的原因。有什么建议吗?

$sql = "INSERT INTO users (`id`, `username`, `password`, `firstname`, 
        `lastname`, `photo`, `mobile`, `fax`, `bday`, `homeadd`, `city`,
        `state`, `zip`, `mailingadd`, `altfax`, `altphone`, `email`,
        `emailpass`, `website`, `bio`, `designations`, `photo2`, `type`,
        `confirmed_email`, `registered_on`, `disabled`, `admin_disabled`)
        VALUES (NULL, $username, MD5('$password'), $firstname, $lastname, 
        '', 'test', '', '', '', '', '', '', '', '', '', $email, '', '', '', '',
        '', 'agent', '1', NOW(), $disabled, 0)";`

4 个答案:

答案 0 :(得分:1)

将转义添加到所有字符串值。 这是php函数:mysqli_real_escape_string()。 您应该使用PDO

重构代码

答案 1 :(得分:0)

您的变量仍应使用单引号。无论何时插入'$variable',都要在它周围抛出单引号。

答案 2 :(得分:0)

您应该在各个值附近添加引号:

$sql = "INSERT INTO users (id,username,password,firstname,lastname,photo,mobile,fax,bday,homeadd,city,state,zip,mailingadd,altfax,altphone,email,emailpass,website,bio,designations,photo2,type,confirmed_email,registered_on,disabled,admin_disabled) VALUES (NULL, '$username', MD5('$password'), '$firstname', '$lastname', '', 'test', '', '', '', '', '', '', '', '', '', '$email', '', '', '', '', '', 'agent', '1', NOW(), $disabled, 0)";

答案 3 :(得分:0)

您没有引用变量:

$sql       = "INSERT INTO users 
(`id`, `username`, `password`, `firstname`, `lastname`, `photo`, `mobile`, `fax`, `bday`, `homeadd`, `city`, `state`, `zip`, `mailingadd`, `altfax`, `altphone`, `email`, `emailpass`, `website`, `bio`, `designations`, `photo2`, `type`, `confirmed_email`, `registered_on`, `disabled`, `admin_disabled`) VALUES 
(NULL, '$username', MD5('$password'), '$firstname', '$lastname', '', 'test', '', '', '', '', '', '', '', '', '', '$email', '', '', '', '', '', 'agent', '1', NOW(), '$disabled', 0)";   

我真的建议远离mysql_ *函数,因为它们已被弃用,并且在将来的版本中不起作用。如果您使用PDO或MySQLi,则可以使用绑定功能,因此您不必担心引用值。