【发布时间】:2012-08-17 01:50:40
【问题描述】:
有什么方法可以转换
$term = $_GET['p'];
$stmt = $dbh->prepare("
SELECT *
FROM posts
WHERE heading LIKE '%$term%'
OR full_text LIKE '%$term%'
LIMIT 0 , 30
");
$stmt->execute();
$answer = $stmt->fetch(PDO::FETCH_ASSOC);
进入类似的东西
$term = "'%" . $_GET['p'] . "%'";
$stmt = $dbh->prepare("
SELECT *
FROM posts
WHERE heading LIKE :term
OR full_text LIKE :term
LIMIT 0 , 30
");
$stmt->bindParam(":term", $term);
$stmt->execute();
$answer = $stmt->fetch(PDO::FETCH_ASSOC);
这样我就可以在查询中使用bindParam(":term", $term); 而不是'%$term%'?
我已经看过这些Using LIKE in bindParam for a MySQL PDO Query 和Mysql, PDO - Like statement not working using bindParam。但是对于我的问题,他们没有给我任何正确的答案。
【问题讨论】:
-
很高兴你在问如何正确地逃避事情,而不是抓住第一个看起来可以工作并运行的东西。在将变量直接放入 SQL 时,请始终保持警惕。
-
总是要保持安全,对吧? ;) @tadman
标签: mysql pdo get sqlbindparameter sql-like