首页 > 解决方案 > 使用撇号搜索未转义记录的查询

问题描述

这是在mysql中:

Column: Title
        ___________
        Children's 

代码:

$result = mysql_query("SELECT * FROM bookings_css_multi_lang WHERE model='pjCourse' AND field = 'title' AND content LIKE '%".$searchTerm."%' LIMIT $start_from, $results_per_page");
while ($myrow = mysql_fetch_row($result))
{

标签: phpmysql

解决方案


如果你真的必须使用过时的mysql扩展,你必须转义输入以防止这样的语法错误。利用:

$searchTerm = mysql_real_escape_string($searchTerm);

在查询之前。

但是您确实应该转换为mysqlior PDO`,它允许您编写参数化查询。在 PDO 中,你可以这样写:

$stmt = $pdo->prepare("
    SELECT * 
    FROM bookings_css_multi_lang 
    WHERE model='pjCourse' AND field = 'title' 
        AND content LIKE CONCAT('%', :search_term, '%')
    LIMIT :start_from, :results_per_page");
$stmt->bindParam(':search_term', $searchTerm);
$stmt->bindParam(':start_from', $start_from);
$stmt->bindParam(':results_per_page', $results_per_page);
$stmt->execute();
while($myrow = $stmt->fetch(PDO::FETCH_ASSOC)) {
    ...
}

推荐阅读