所以我有以下 function
function searchusers($username){
$result=$this->conn->prepare("SELECT username,
profilimg,
(SELECT COUNT(title) FROM animelist WHERE mystatus='Watching' AND addedby LIKE CONCAT('%','?','%')) AS watching,
(SELECT COUNT(title) FROM animelist WHERE mystatus='Completed' AND addedby LIKE CONCAT('%','?','%')) AS completed,
(SELECT COUNT(title) FROM animelist WHERE mystatus='On-hold' AND addedby LIKE CONCAT('%','?','%')) AS onhold,
(SELECT COUNT(title) FROM animelist WHERE mystatus='Dropped' AND addedby LIKE CONCAT('%','?','%')) AS dropped,
(SELECT COUNT(title) FROM animelist WHERE mystatus='Plan to watch' AND addedby LIKE CONCAT('%','?','%')) AS plantowatch,
(SELECT COUNT(title) FROM animelist WHERE addedby LIKE CONCAT('%','?','%')) AS all,
(SELECT COUNT(title) FROM animelist WHERE addedby LIKE CONCAT('%','?','%') AND favourite='1') AS favourites,
(SELECT COUNT(subject) FROM comments WHERE name LIKE CONCAT('%','?','%')) AS allcomments,
(SELECT COUNT(review) FROM reviews WHERE addedby LIKE CONCAT('%','?','%')) AS allreviews,
(SELECT AVG(myscore) FROM animelist WHERE addedby LIKE CONCAT('%','?','%')) AS meanscore
FROM user WHERE username LIKE CONCAT('%','?','%') LIMIT 120");
$result->bindparam(1,$username);
$result->bindparam(2,$username);
$result->bindparam(3,$username);
$result->bindparam(4,$username);
$result->bindparam(5,$username);
$result->bindparam(6,$username);
$result->bindparam(7,$username);
$result->bindparam(8,$username);
$result->bindparam(9,$username);
$result->bindparam(10,$username);
$result->bindparam(11,$username);
$result->execute();
return $result->fetchall();
}
如您所见,我将相同的值绑定(bind)到 11 个参数,但我通过重复
$result->bindparam(1,$username);
11 次来实现,这看起来非常糟糕。我要问的是,是否有更好的解决方案将一个值绑定(bind)到所有参数,而不是多次重复
bindparam
?我可能可以使用命名占位符而不是问号更容易地解决这个问题,但这不是我现在正在寻找的解决方案。
我认为有一种方法可以用
for
/foreach
解决这个问题,但我不知道它应该是什么样子。谢谢您的帮助!
最佳答案
for($i=0; $i<11; $i++){
$result->bindparam($i,$username);
}
return $result->fetchall();
由于您知道有 11 个绑定(bind)参数,因此您可以简单地使用计数器。
关于php - 如何在 PHP PDO 中简单地将一个值绑定(bind)到所有参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56162886/