Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有3个参数的SQL PDO计数行_Php_Sql_Pdo - Fatal编程技术网

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”;”