当字符串包含引号时,在引号前添加反斜杠 - PHP

时间:2016-04-25 17:48:27

标签: php filter filtering

我正在做一个小的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");
}

2 个答案:

答案 0 :(得分:0)

尝试使用addslashes()功能

答案 1 :(得分:0)

您没有正确使用预准备语句,这就是您遇到此问题的原因。如果您正确使用预准备语句,他们会为您解决此问题。这方面的文档实际上非常好。

http://php.net/manual/en/pdo.prepared-statements.php

编辑:请花时间学习如何正确使用它们。如果没有,您的代码很容易受到SQL注入。