嗨,我从一些用户那里得到以下错误:'where 子句'中的未知列'c63rd321' 它适用于一个用户,但它对所有其他用户没有任何想法?
$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id='.$user_id.' LIMIT 1';
我需要添加到 users.id="" 为什么它适用于一个用户而不适用于其他用户
看起来$user_id
是一个字符串 ( "c63fb321"
) 而不是整数。使用引号(并转义!)
$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id="'.mysql_real_escape_string($user_id).'" LIMIT 1';
(假设mysql_
这里的功能,但这也适用于 PDO 和 mysqli)
请替换这个:
$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id='.$user_id.' LIMIT 1';
... 有了这个:
$query = 'SELECT first_name,last_name,is_admin FROM '.$database.'.users WHERE users.id=:user_id LIMIT 1';
^^^^^^^^
...并添加user_id
到准备好的语句参数中。如果您的库不支持准备好的语句,请随时询问更多详细信息,但您应该考虑切换到更好的库。
你的 user_id 总是整数吗?如果是这样,您不需要添加引号。但是形成你的问题我可以猜到它可能是字符串。您可以使用mysql_real_escape_string()
快速测量(http://php.net/manual/en/function.mysql-real-escape-string.php)。
但是,正如您从以前的答案中可能知道的那样,如果您使用 mysqli 或 PDO 重写它会更好。但这应该很复杂,也许需要一些时间。