我已经倾倒了这个并且无法找到可能导致错误的原因。有什么建议吗?
$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)";`
答案 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,则可以使用绑定功能,因此您不必担心引用值。