2014-10-01 44 views
0

我正在使用代码获取使用pdo的mysql查询的结果到php变量 但我面临一些问题,无法存储结果查询入变量 错误消息 致命错误:调用一个成员函数查询()非对象上在...第4行错误的结果从MySQL中存储在一个PHP变量pdo

<?php 
require 'test.php'; 
    $sql = "SELECT COUNT(*) FROM vup_file"; 
    if ($STH = $DBH->query($sql)) { 
    # check the row count 
    if ($STH->fetchColumn() > 0) { 

    echo $STH; 
    } 
    else { 
     echo "No rows matched the query."; 
    } 
} 

?> 

为了清楚起见,从这个comment .. 。

I want to store the Maximum Id value in a php variable using pdo

+0

'$ DBH'应声明为全局 – 2014-10-01 06:36:02

+3

只要确保'$ DBH'是一个pdo连接的实例,是'test.php'里面的连接吗? – Ghost 2014-10-01 06:37:34

+0

'$ DBH = new PDO('mssql:host = sqlserver; dbname = database','username', 'password');' – 2014-10-01 06:39:26

回答

0

试试这个代码:

选项1

<?php 
$DBH = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sql = "SELECT COUNT(*) FROM vup_file"; 
if ($STH = $DBH->query($sql)) { 
    if ($STH->rowCount() > 0) { 
     echo "rows matched the query."; 
    } 
    else { 
     echo "No rows matched the query."; 
    } 
} 


选项2 @phil是正确的,如果你要在查询中计算行数,你还不如读值:

<?php 
$DBH = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sql = "SELECT COUNT(*) as rowCount FROM vup_file"; 
$STH = $DBH->query($sql) 
$row = $STH->fetch(); 
if ($row['rowCount'] > 0) { 
    echo "rows matched the query."; 
} 
else { 
    echo "No rows matched the query."; 
} 

Sh乌尔德工作,只要连接和查询是有效的

+0

解析错误:语法错误,意外的'<'.... on第2行 – 2014-10-01 06:45:43

+0

如果他们只是检查* count> 0 *那么查询也可能是'SELECT 1 FROM vup_file' – Phil 2014-10-01 06:46:15

+0

@你是指'LIMIT 1'? – meda 2014-10-01 06:46:56

0

好了,从你的comment

I want to store the Maximum Id value in a php variable using pdo

看来你想是这样的......

$max = $DBH->query('SELECT MAX(Id) FROM vup_file')->fetchColumn(); 
if ($max === false) { 
    echo 'There are no records in this table'; 
} 

我不知道为什么你打扰与COUNT(*)查询。

相关问题