【问题标题】:Error in storing the result from mysql in a php variable pdo将mysql的结果存储在php变量pdo中时出错
【发布时间】:2014-10-01 06:34:19
【问题描述】:

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

<?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...

我想使用 pdo 将最大 Id 值存储在 php 变量中

【问题讨论】:

  • $DBH 应声明为全局
  • 只要确定$DBH是pdo连接的一个实例,是test.php里面的连接吗?
  • $DBH= new PDO('mssql:host=sqlserver;dbname=database', 'username', 'password');
  • 我根据 test.php 更改了我的连接文件,但我得到错误 Object of class PDOStatement could not be convert to string in
  • 您希望从echo $STH 得到什么? $STHPDOStatement 的一个实例,不能隐式转换为字符串

标签: php mysql select pdo


【解决方案1】:

好的,来自您的comment

我想使用 pdo 将最大 Id 值存储在 php 变量中

看来你想要这样的东西......

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

我不知道您为什么对COUNT(*) 查询感到困扰。

【讨论】:

    【解决方案2】:

    试试这个代码:

    选项 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.";
    }
    

    应该可以,只要连接和查询有效

    【讨论】:

    • 如果他们只是检查 count > 0 那么查询可能是SELECT 1 FROM vup_file
    • @Phil 你的意思是LIMIT 1 ?
    • 我想使用 pdo 将最大 Id 值存储在 php 变量中
    • @SrinathNaidu 使用 max() 函数
    • @meda 不,我不知道。如果您不打算使用结果,为什么还要麻烦创建数据库COUNT
    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 2023-03-27
    • 2021-04-24
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多