单引号无法正常工作的数据库表搜索

时间:2017-04-15 10:28:15

标签: php mysql select escaping single-quotes

问题:

转到:http://www.englishact.com/Quotations/allquotgr.php

如果您搜索Bl?ue,则会显示一些结果。

但是,如果您搜索Bl?ue 's,则不会有任何结果。

但我的mysql表包含' [quote]

的数据

所有版本的quotation pages

都会遇到同样的问题

示例:

http://www.englishact.com/Quotations/allquot.php] 2

[http://www.englishact.com/Quotations/allquotfr.php

我的代码:

if(isset($_GET['quotation'])){
    $puty = $_GET['quotation'];
    $put = urldecode($_GET['quotation']);
    $sql = "SELECT * FROM `gr` WHERE `quot` LIKE '%".$put."%' OR `author` LIKE '%".$put."%'";
}
$result = mysqli_query($con,$sql);
while ($row = mysqli_fetch_array($result)) {
    $quot[] = $row;
}

我认为问题在上面的代码中。

1 个答案:

答案 0 :(得分:0)

这是每个人都告诉你的事情:

if(isset($_GET['quotation'])){
    $con=new mysqli("localhost","username","password","database");  // use your details obviously
    if($stmt=$con->prepare("SELECT * FROM `gr` WHERE `quot` LIKE ? OR `author` LIKE ?")){
        $p1=$p2="%{$_GET['quotation']}%";  // wrap the values with % for LIKE
        $stmt->bind_param("ss",$p1,$p2);
        $stmt->execute();
        $result=$stmt->get_result();
        while($row=$result->fetch_array(MYSQLI_ASSOC)){
            $quot[] = $row;
        }
    }else{
        echo mysqli_error($con);
    }
}

这将保护您的查询并解决您的问题。