2012-07-21 85 views
1

当前我试图使用用户输入查询COUNT(*),所以我想准备它,但是当我这样做时没有响应,我也使用这个: Row count with PDO作为示例,(准备和查询),但他们似乎都不起作用。为什么?世界上没有理由...
Mysql PDO准备执行计数(PHP)

$count = $con->query("SELECT COUNT(*) FROM $table WHERE senha='$senha' AND var='{$ar[$i]}'")->fetchColumn(); 
    if($count!=0){ 
     $q = $con->prepare("UPDATE $table SET value=':value' WHERE senha=':senha' AND var=':var'"); 
     $q->execute(array(':senha' => $senha, ':value' => $ar[$i+1], ':var' => $ar[$i])); 
    }else{ 
     $q = $con->prepare("INSERT INTO $table (id,senha,var,value) VALUES (NULL, ':senha', ':var', ':value')"); 
     $q->execute(array(':senha' => $senha, ':var' => $ar[$i], ':value' => $ar[$i+1])); 
    } 

当我用他的第一个例子(使用不准备使用查询数组传递值)没有在所有的工作中,查询一个返回了号码,但不工作的ifupdateinsert)部分我已经尝试了一堆东西和输出,没有任何工作...

回答

3

当你使用参数绑定与PDO时,你不应该包括单引号。所以纠正你的UPDATE和INSERT查询到如下:

$q = $con->prepare("UPDATE $table SET value=:value WHERE senha=:senha AND var=:var"); 

$q = $con->prepare("INSERT INTO $table (id,senha,var,value) VALUES (NULL, :senha, :var, :value)"); 
+0

没有单引号,他们可以使用#或 - 如何避免这种情况? – PedroGabriel 2012-07-22 02:08:59

+0

这将由PDO照顾。这实际上是使用PDO参数绑定的目的之一:) – mask8 2012-07-22 02:12:12

+0

奇怪,当我尝试它似乎被评论HM,我会再试一次。谢谢你的回答(接受的原因有道理......) – PedroGabriel 2012-07-22 03:41:06