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


Adding backslash before quotes when string contains them - PHP

我正在做一个小的ajax问题结果系统。当用户在文本区域中键入内容时,会自动搜索并输出结果。

问题是每次用户键入包含"或"的问题时 - 搜索都不成功。有什么方法可以在字符串内的"或"中添加反斜杠,以便将其忽略?

或者是否有任何过滤器忽略"或"?

我需要用引号搜索问题,因为数据库中的问题包含它们。

代码如下:

$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");
}

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

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

编辑:请花时间学习如何正确使用它们。否则,您的代码容易受到 SQL 注入的影响。

尝试使用 addslashes() 函数