PHP Mysql 查询不工作 - 与查询中的 '+' 符号有关

标签 php mysql sql

我有这样的代码:

$item = $_POST["item"];

$sql = "Select * FROM table WHERE item = '$item'";

$result = @mysql_query("$sql",$db);

如果$_POST["item"]包含类似“Black + White Jumper”

即使数据库中有名为“Black + White Jumper”的项目,查询也找不到项目

它与 + 符号有关。

我可以做什么来解决这个问题?

谢谢

**上面不是我的实际代码,因此不需要有关潜在 SQL 注入(inject)或类似内容的回复,只是想知道如何让“+”字符在查询中工作。

最佳答案

始终使用 mysql_real_escape_string 包装外部输入,以防止错误和 SQL 注入(inject)。

$sql = "Select * FROM table WHERE item = '".mysql_real_escape_string($_POST['item'])."'";
$result = mysql_query("$sql",$db);

用@来抑制错误也不是一个好主意。使用正确的错误处理。其次,从 PHP 5.5.0 开始不推荐使用 mysql-extension,请考虑使用 mysqli 或 pdo。

关于PHP Mysql 查询不工作 - 与查询中的 '+' 符号有关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26951175/

相关文章:

php - 如何将 PHP 变量名传递给 Javascript 函数

php - 从表单获取信息并使用 php 写入 xml 文件?

php - 如何使用 Zend_Db_Table 选择列的 MAX?

sql - 如何优化这个查询?

mysql - SQL 仅选择列上具有最大值的行

PHP 数组查找对象的索引

mysql - Sqljocky,多组参数的事务查询

sql - MySQL ORDER BY 偏移量

mysql - SQL - 显示表中的结果,而不显示另一个表中的值

php - 在单个查询中查找 mysql 表中某个条目左侧和右侧的条目