试图获取我的项目的列,从未在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)
你的$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:业务.无需干预