bindParam用于PDO MySQL查询中LIKE的GET值

Nwo*_*rks 2 mysql pdo get sqlbindparameter sql-like

是否有任何转换方式

$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);
Run Code Online (Sandbox Code Playgroud)

INTO之类的东西

$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);
Run Code Online (Sandbox Code Playgroud)

这样我可以使用bindParam(":term", $term);而不是'%$term%'在查询中?

我已经在bindParam中查看了这些使用LIKE的MySQL PDO查询使用bindParam的Mysql,PDO-Like语句.但他们没有给我任何正确的答案.

egg*_*yal 5

将通配符符号连接到SQL中的变量:

$stmt = $dbh->prepare("
    SELECT      *
    FROM        posts
    WHERE       heading   LIKE CONCAT('%', :term, '%')
    OR          full_text LIKE CONCAT('%', :term, '%')
    LIMIT       0 , 30
");
$stmt->bindParam(':term', $_GET['p']);
$stmt->execute();
$answer = $stmt->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)