2016-04-22 50 views
0

我正在尝试移至PDO。尝试获取行数时PDO上的fetchColumn错误

我想做一个经典的查询检查行数,在mysql中我会做mysql_num_rows_result但我读过的地方,在PDO它不起作用。

所以我已经尝试使用下面的代码获取列:

global $bdd; 
      $login = $bdd->query("SELECT 
        COUNT 
        FROM spb_clients_acces_compte, 
         spb_clients_infos_generales 
        WHERE spb_clients_acces_compte.spb_clients_acces_compte_e_mail = '{$email}' 
        AND spb_clients_acces_compte.spb_clients_acces_compte_pwd_md5 = '{$pass}' 
        AND spb_clients_acces_compte.spb_clients_acces_compte_admin = 1"); 
      $reponse = $bdd->fetchColumn(); 
      if ($reponse == 0): 

      elseif ($reponse == 1): 

      else: 
      endif; 
      var_dump($reponse); 

这回我:

(!) Fatal error: Call to undefined method PDO::fetchColumn() in C:\wamp\www\spb2016\admin\core\login.php on line 20

第20行是:$reponse = $bdd->fetchColumn();

我试着许多事情没有成功

任何帮助将不胜感激。

+0

* * “我会做mysql_num_rows_result但我在其他地方见过,在PDO这是行不通的。” - 没错。你不能混合不同的API,我们不知道你是否使用同一个API来连接。如果你没有与PDO联系,那么这是一个问题。 –

+0

[获取具有PDO的行数](http://stackoverflow.com/a/31569733/1011527) –

+0

这个'SELECT COUNT'如果您想使用该功能,并且您没有调用列'COUNT',然后是'COUNT(col | *)' –

回答

1

首先,您需要在您的COUNT函数中添加一列。 COUNT是一个mysql函数,它返回你传递它的任何参数的个数,所以COUNT(id)可以工作。

其次,您必须使用PDOStatement才能获取结果。更换

$reponse = $bdd->fetchColumn(); 

$reponse = $login->fetchColumn(); 
+0

第三,他必须使用pdo准备好的分层,否则根本没有必要使用pdo。 –

+0

@YourCommonSense你有关于预备陈述的文档吗?谢谢你的帮助 –

+0

@Stanislas是的,我有[非常好的文档](http://phpdelusions.net/pdo) –

相关问题