【问题标题】:Call to undefined method mysqli_stmt::fetchColumn()调用未定义的方法 mysqli_stmt::fetchColumn()
【发布时间】:2014-12-23 14:24:15
【问题描述】:

我正在尝试获取从 sql 查询返回的计数结果

require_once("inc/db_const.php");
$date=$_GET['date_rdv']; 
$mysqli= new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if($mysqli->connect_errno)
{
   echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
   exit();
}
$query_check="SELECT count(*) FROM planning_cl WHERE date_plannig = ?";
$statement_check = $mysqli->prepare($query_check);
$statement_check->bind_param('s',$date);
$statement_check->execute();
$rdv_verif=$statement_check->fetchColumn();
echo $rdv_verif;

但它显示了这个错误

r: Call to undefined method mysqli_stmt::fetchColumn()

谁能给我任何解决这个问题的方法

【问题讨论】:

标签: php pdo mysqli


【解决方案1】:

你需要使用$statement_check-&gt;fetch();

require_once("inc/db_const.php");
$date=$_GET['date_rdv']; 
$mysqli= new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if($mysqli->connect_errno)
{
   echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
   exit();
}
$query_check="SELECT count(*) as cnt FROM planning_cl WHERE date_plannig = ?";
$statement_check = $mysqli->prepare($query_check);
$statement_check->bind_param('s',$date);
$statement_check->execute();
$line=$statement_check->fetch(PDO::FETCH_ASSOC);
$rdv_verif = $line['cnt']
echo $rdv_verif;

【讨论】:

    【解决方案2】:

    如在类似问题中所见:

    Why is PDO fetchColumn() not working here


    如果要获取返回的行数,请使用rowCount

    // ...
    $rows = $stmt->rowCount();
    
    echo 'Rows found '.$rows;
    // ...
    

    这是获取您需要的行数的最合适的方法,所以在您的情况下:

    $rdv_verif=$statement_check->rowCount(); 
    

    【讨论】:

      【解决方案3】:

      MySQL 中没有mysqli_stmt::fetchColumn(),请参阅Documentation 这是一个PDO 方法。

      对于 MySQLi,请使用 mysqli_stmt_num_rows ( )

      $rdv_verif=$statement_check->mysqli_stmt_num_rows();
      echo $rdv_verif;
      

      【讨论】:

      • 这个答案是错误的,因为这个函数对于选择count(*)的查询总是返回1
      【解决方案4】:

      mysqli中没有fetchColumn方法,这个方法属于另一个驱动,PDO。

      但您可以使用mysqli_fetch_row()[0] 轻松模拟它:

      $sql = "SELECT count(*) FROM planning_cl WHERE date_plannig = ?";
      $stmt = $mysqli->prepare($sql);
      $stmt->bind_param('s',$date);
      $stmt->execute();
      $rdv_verif = $stmt->get_result()->fetch_row()[0];
      echo $rdv_verif;
      

      【讨论】:

        猜你喜欢
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2014-01-09
        相关资源
        最近更新 更多