PDO准备的语句Like和OR语句一起使用


PDO prepared statements Like and OR statements used together

我想说,如果所有的OR都匹配,那么就会显示。如果它离保管人很近,则显示(LIKE)对利奥来说,是的,我试过了:保管人是整个密码。我评论了你的建议,因为这是目前有效的方法。(还更改了sql)。我很好奇我试图得到"计数"的第一个查询是否重要。让我知道。谢谢

$q = $_GET['q'];
$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets WHERE po = :query OR serialNum = :query OR dop = :query OR purchaseFrom = :query OR custodian = :query");
    $STH->bindParam(':query', $q);
            //$STH->bindParam(':custodian', '%'.$q.'%');
    $STH->execute();
    if ($STH->fetchColumn() > 0) {
        $STH = NULL;
        $STH = $dbh->prepare("SELECT * FROM inv_assets WHERE po = :query OR serialNum = :query OR dop =:query OR purchaseFrom = :query OR custodian = :query");
        $STH->bindParam(':query', $q);
        //$STH->bindParam(':custodian', '%'.$q.'%');
                    $STH->execute();
        showTable($STH,$perms);

LIKE取代=而非OR

示例:

SELECT first_name, last_name 
FROM student_details 
WHERE first_name LIKE 'S%' OR last_name LIKE 'A%';

看看这里:SQL比较关键字

如何执行PDO LIKE查询的示例。

$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets 
                      WHERE po = :query OR serialNum = :query OR dop = :query 
                      OR purchaseFrom = :query OR custodian LIKE :custodian");
$ret = $STH->execute(array(':custodian' => '%'.$query.'%',':query' => $query));

bindParam:示例

<?php
$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets 
                      WHERE po = :query OR serialNum = :query OR dop = :query 
                      OR purchaseFrom = :query OR custodian LIKE :custodian");
$STH->bindParam(':custodian', '%'.$q.'%');
$STH->bindParam(':query', $q);
$STH->execute();
?>
<?php
$STH = $dbh->prepare("SELECT COUNT(*) FROM inv_assets 
                      WHERE po = :query OR serialNum = :query OR dop = :query 
                      OR purchaseFrom = :query OR custodian LIKE :custodian");
$custodian = "%".$q."%";
$STH->bindParam(':custodian', $custodian);
$STH->bindParam(':query', $q);
$STH->execute();
?>

这将避免通过引用错误传递参数2,并在

中工作