在非对象PDO上调用成员函数fetchColumn()

Jon*_*ale 0 php pdo

试图获取我的项目的列,从未在PDO中这样做,尝试查看文档,但它并没有真正帮助.

  $sql = $CONNECT_TO_DATABASE->query("SELECT COUNT(*) FROM comments");
    $result = $sql->fetch(PDO::FETCH_ASSOC);
    $r = $result->fetchColumn();
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

致命错误:在第6行的C:\ xampp\htdocs\project\events.php中的非对象上调用成员函数fetchColumn()

$r = $result->fetchColumn();
Run Code Online (Sandbox Code Playgroud)

谢谢!

连接:

<?php
/**
* Connect to Database
* @Author Jony <artemkller@gmail.com>
**/
    ##################CHANGE THIS####################
        /**                                         #   
        * MYSQL HOST HERE (Example: localhost)      #
        **/                                         #
                                                    #
        DEFINE ("MYSQL_HOST", "localhost");         #
                                                    #
        /**                                         #
        * MYSQL USER HERE (Example: root)           #
        **/                                         #
                                                    #
        DEFINE ("MYSQL_USER", "root");              #
                                                    #   
        /**                                         #       
        * MYSQL PASSWORD HERE (Example: password)   #
        **/                                         #           
                                                    #   
        DEFINE ("MYSQL_PASSWORD", "");              #
                                                    #   
    #################################################

    # Connect to the database using PDO.
    $CONNECT_TO_DATABASE = new PDO('mysql:host='.MYSQL_HOST.';dbname=project', MYSQL_USER, MYSQL_PASSWORD);

    # See if theres an error while connecting to the database
    try {
        $CONNECT_TO_DATABASE->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $ERROR_MESSAGE)
    {
        echo 'ERROR: ' . $ERROR_MESSAGE->getMessage();
    }


?>
Run Code Online (Sandbox Code Playgroud)

You*_*nse 6

你的$result变量只是一个数组,并没有方法.

您不需要第二次提取呼叫.使用fetch或fetchColumn.在你的情况下你需要一个后者:

$sql = $CONNECT_TO_DATABASE->query("SELECT COUNT(*) FROM comments");
$count = $sql->fetchColumn();
Run Code Online (Sandbox Code Playgroud)

顺便问一下,你不觉得那$CONNECT_TO_DATABASE有点长吗?那怎么样$pdo呢?

当你发布连接代码时,它是如何必须的:

# Set PDO connection options
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
# Connect to the database using PDO.
$dsn = 'mysql:host='.MYSQL_HOST.';dbname=project';
$pdo = new PDO($dsn, MYSQL_USER, MYSQL_PASSWORD);
Run Code Online (Sandbox Code Playgroud)

就这样.PHP已经可以处理该echo 'ERROR:业务.无需干预

  • @JonyKale ......这对我来说太高了;-) (2认同)