Поиск в таблице базы данных с одинарными кавычками не работает

Проблема:

Перейдите по адресу: http://www.englishact.com/Quotations/allquotgr.php

Если вы ищете Bl?ue, он покажет некоторые результаты.

Тем не менее, если вы ищете Bl?ue 's, не будет никаких результатов.

Но моя таблица MySQL содержит данные, в том числе ' [Цитата]

Та же проблема происходит для всех версий quotation pages

Пример:

http://www.englishact.com/Quotations/allquot.php%5D 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 ответ

Это то, что все говорят вам делать:

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

Это защитит ваш запрос и решит вашу проблему.

Другие вопросы по тегам