【问题标题】:fetchColumn error on PDO while trying to get number of rows尝试获取行数时 PDO 上的 fetchColumn 错误
【发布时间】:2016-08-16 09:13:59
【问题描述】:

我正在尝试迁移到 PDO。

我想做一个经典的查询来检查行数,在 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);

这还给我:

( ! ) 致命错误:在第 20 行调用 C:\wamp\www\spb2016\admin\core\login.php 中未定义的方法 PDO::fetchColumn()

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

我尝试了很多事情都没有成功

我们将不胜感激。

【问题讨论】:

  • “我会做 mysql_num_rows_result 但我在某处读到它在 PDO 中不起作用。” - 完全正确。您不能混合使用不同的 API,我们不知道您是否使用相同的 API 进行连接。如果您没有连接到 PDO,那就是个问题。
  • 这个SELECT COUNT如果你想使用那个函数并且你没有一个名为COUNT的列,那么它就是COUNT(col|*)
  • 连接是$bdd = new PDO("mysql:host=localhost;dbname=183867brwzl", "root", "");
  • RTFM: php.net/manual/en/pdostatement.fetchcolumn.php fetchColumn 是 PDOStatement 对象的一个​​方法,这是您从查询调用中得到的。 $bdd 是 PDO 对象,$login 是 PDOStatement。

标签: php mysql pdo mysql-num-rows


【解决方案1】:

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

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

$reponse = $bdd->fetchColumn();

$reponse = $login->fetchColumn();

【讨论】:

  • 第三,他必须对pdo使用准备好的语句,否则使用pdo根本没有意义。
  • @YourCommonSense 你有关于准备好的声明的文档吗?感谢您的帮助
  • 非常感谢你对我很有帮助。我是这里的初学者:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2019-06-29
  • 2020-10-29
  • 2015-12-05
  • 2013-02-14
  • 2018-01-13
相关资源
最近更新 更多