我想说,如果所有的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,并在
中工作