我有一个如下的mysql查询
mysql_query("select * from user where name='$name' LIMIT 1");
如果假设我来自客户端的输入是“John”,我的查询中将会出现 MySQL 错误。防止这种情况的最佳做法是什么?
我有一个如下的mysql查询
mysql_query("select * from user where name='$name' LIMIT 1");
如果假设我来自客户端的输入是“John”,我的查询中将会出现 MySQL 错误。防止这种情况的最佳做法是什么?
尝试:
$query = sprintf("select * from user where name='%s', mysql_real_escape_string($name));
$result = mysql_query($query);
确保 $name 包含您认为它所做的事情(回显它以确认)。
首先,不推荐使用 mysql_* 函数,您应该使用 PDO 或 mysqli_ 代替。这两个库实现了准备好的语句,它们会自动转义您的输入。
如果要改用 mysql_*,则必须调用mysql_real_escape_string
传递的 var
mysql_query("select * from user where name='" . mysql_real_escape_string($name) . "' LIMIT 1");