我有这样的代码:
$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/