mysql_real_escape_string在数据库连接中返回空/空

时间:2014-08-27 01:01:30

标签: php mysql string mysql-real-escape-string ezsql

我遇到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)."'");

解决方法:

在$ row之前或之内放置mysql_real_escape_string会使值为空。把mysql_real_escape_string放在$ 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)."'");

问题:

我该如何妥善解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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