【问题标题】:php - mysql_real_escape_string and varchar issuephp - mysql_real_escape_string 和 varchar 问题
【发布时间】:2013-01-19 19:20:59
【问题描述】:

我在 php 中使用 mysql_query,我的问题是,当我使用 mysql_real_escape_string 传递一个字符串时,它没有返回任何结果。当我删除 mysql_real_escape_string 函数时,它工作得很好。这是我的代码:

public function select_user($user) {  
 $sql = "SELECT * FROM users WHERE username LIKE '".mysql_real_escape_string($user)."'";
 return $this->query($sql);
} 

注意 $this->query 是一个查询语句的函数。

【问题讨论】:

  • Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。
  • 你希望它做什么?在任何地方检查包含字符串的用户名?你错过了% 的标志。另外,如上所述,不要使用 mysql_ 扩展名。
  • 嗯,我想我必须使用 MySQLi 或 PDO....这似乎是一个更好的选择...谢谢!
  • 您是否将$sql 变量的实际外观与有效版本和无效版本进行了比较。查看它们之间的差异可能会让您了解正在发生的事情。

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


【解决方案1】:

很可能没有为 mysql_* 函数建立 mysql 连接,因此 mysql_real_escape_string 返回一个空字符串。

您必须使用您用于query() 方法的 API 允许的任何格式化/绑定工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多