我正在做一个小的ajax问题 - 结果系统。当用户在textarea中输入内容时,会自动搜索并输出结果。
问题在于每次用户输入包含""的问题时或者'' - 搜索失败。有什么方法可以添加反斜杠到""或者''在字符串中,所以它会被忽略吗?
或者是否有任何过滤器忽略""或''?
我需要用引号搜索问题,因为数据库中的问题包含它们。
以下是代码:
$q = $_POST['q'];
// for every " or ' in $q add \ before it
$results = array();
$result = array();
$count = 0;
$stmt = $dbh->prepare("SELECT result FROM quest WHERE quest LIKE '".$q."%'");
if($stmt->execute()){
$result = $stmt->fetchAll(PDO::FETCH_OBJ);
$count= $stmt->rowCount();
}
if($result != NULL){
foreach($result as $part){
foreach($part as $item){
$results[] = $item;
}
}
echo htmlentities($results[0], ENT_QUOTES, "UTF-8");
}
答案 0 :(得分:0)
尝试使用addslashes()功能
答案 1 :(得分:0)
您没有正确使用预准备语句,这就是您遇到此问题的原因。如果您正确使用预准备语句,他们会为您解决此问题。这方面的文档实际上非常好。
http://php.net/manual/en/pdo.prepared-statements.php
编辑:请花时间学习如何正确使用它们。如果没有,您的代码很容易受到SQL注入。