Php 带有3个参数的SQL PDO计数行
我有以下代码:Php 带有3个参数的SQL PDO计数行,php,sql,pdo,Php,Sql,Pdo,我有以下代码: public static function check($ip,$op,$page) { $con = new PDO(DBN,DB_USER,DB_PASS); $sql = "SELECT COUNT(*) FROM ips WHERE ip=:ip"; $st = $con->prepare($sql); $st->bindValue(":ip",$ip,PDO::PARAM_STR); $st->execute(); $counter =
public static function check($ip,$op,$page)
{
$con = new PDO(DBN,DB_USER,DB_PASS);
$sql = "SELECT COUNT(*) FROM ips WHERE ip=:ip";
$st = $con->prepare($sql);
$st->bindValue(":ip",$ip,PDO::PARAM_STR);
$st->execute();
$counter = $st->fetchColumn();
$con = null;
return $counter;
}
$计数器显示正确的行数,但如果我添加
$st->bindValue(":op",$op,PDO::PARAM_INT);
$st->bindValue(":page",$page,PDO::PARAM_INT);
$counter显示为布尔值false;
我仔细检查了我的数据库,但每件事都很好。我试图添加一个数据库和另一个数据库,但问题仍然存在 您可以激活PDO调试并查看您的查询是否有问题:
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
在将值绑定到SQL语句之前,您不需要在SQL语句中包含
:op
和:page
?我将它们放在语句“从ip选择计数(*),其中ip=:ip,op=:op,page=:page”;“正确的方法是:从ip中选择COUNT(*),其中ip=:ip和op=:op和page=:page。正如@fonini所指出的,您应该确保生成的是有效的SQL。感谢我使用you's tip和“$SQL=”SELECT COUNT(*)从ip中选择COUNT(*),其中ip=:ip和op=:op和page=:page”;”