php - 使用撇号搜索未转义记录的查询
问题描述
这是在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))
{
解决方案
如果你真的必须使用过时的mysql
扩展,你必须转义输入以防止这样的语法错误。利用:
$searchTerm = mysql_real_escape_string($searchTerm);
在查询之前。
但是您确实应该转换为mysqli
or 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)) {
...
}
推荐阅读
- c# - 可以返回抛出异常吗?
- eclipse - Eclipse - 未定义 Item.Properties 类型
- javascript - 视频在 EXPO(iOS) 中不播放
- javascript - 如何在javascript中复制对象?
- javascript - 如何使用设置间隔的承诺
- java - 从 BufferedReader 输入整数时如何在 java 中修复 NullPointerException
- php - 遇到错误无法使用 PHP mail() 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件
- asciidoctor - Asciidoctorj:如何允许扩展写入附加文件
- reactjs - 如何使用 ReactJs 和 axios 更新图像
- python - 如何在 django 中获取相互关联的记录?