0

我有一个如下的mysql查询

mysql_query("select * from user where name='$name' LIMIT 1");

如果假设我来自客户端的输入是“John”,我的查询中将会出现 MySQL 错误。防止这种情况的最佳做法是什么?

4

2 回答 2

1

尝试:

$query = sprintf("select * from user where name='%s', mysql_real_escape_string($name));
$result = mysql_query($query);

确保 $name 包含您认为它所做的事情(回显它以确认)。

于 2013-02-17T11:12:40.203 回答
1

首先,不推荐使用 mysql_* 函数,您应该使用 PDO 或 mysqli_ 代替。这两个库实现了准备好的语句,它们会自动转义您的输入。

如果要改用 mysql_*,则必须调用mysql_real_escape_string传递的 var

mysql_query("select * from user where name='" . mysql_real_escape_string($name) . "' LIMIT 1");
于 2013-02-17T11:13:20.450 回答