0

我对 mysql_real_escape_string 有疑问。我使用 ezSQL 连接 MySQL。

问题:

mysql_real_escape_string($username) 和 mysql_real_escape_string($password) 变为空。

代码:

$row = $db->get_row("SELECT firstname, secondname, id FROM users WHERE login='".mysql_real_escape_string($username)."' AND password='".mysql_real_escape_string($password)."'");

解决方法:

将 mysql_real_escape_string BEFORE 或 $row 中的值设为空。将 mysql_real_escape_string 放在 $row 之后使其工作。因此; 在现有的 $row 前面有另一个 $db:

$row2 = $db->get_row("SELECT firstname, secondname, id FROM users");
$row = $db->get_row("SELECT firstname, secondname, id FROM users WHERE login='".mysql_real_escape_string($username)."' AND password='".mysql_real_escape_string($password)."'");

问题:

我该如何正确解决这个问题?

4

2 回答 2

0

最好的方法是使用 mysqli 或 pdo,因为 mysql 函数已被弃用,将来将被删除。

http://php.net/manual/en/mysqli.prepare.php包含一个很好的例子,你可以适应你的情况。您首先按照使用 mysql 的方式设置连接,然后准备查询,绑定将自动转义的参数,然后您可以获取。

于 2014-08-27T01:11:41.950 回答
0

ezsql 有它自己的转义方法,你应该使用它 – Dagon

谢谢,这解决了我的问题!我已将代码更新为:

$password = $db->escape($_POST['password']);
$username = $db->escape($_POST['username']);
$row = $db->get_row("SELECT firstname, secondname, id FROM users WHERE login='".$username."' AND password='".$password."'");

稍后我将努力升级到 MySQLi。我知道ezSQL 也提供了一个MySQLi 组件。感谢您对DestructionmedaChristophe Ferreboeuf的建议!

于 2014-08-27T01:27:11.667 回答