你能帮我在动态数据透视表上写这段代码吗错误:(!)致命错误:调用成员函数fetch\u all()

d4so4syb  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(283)

这个问题在这里已经有了答案

mysqli_fetch_assoc()需要参数/调用成员函数bind_param()时出错。如何获得实际的mysql错误并修复它(1个答案)
两年前关门了。

<?php include("db.php");?>
<?php
$recno=$_GET['recno'];
$con->query('SET @sql = NULL');
$con->query("SELECT\n"
    . "  GROUP_CONCAT(DISTINCT\n"
    . "    CONCAT(\n"
    . "      \'MAX(IF(parid = \'\'\',\n"
    . "      parid,\n"
    . "      \'\'\', par_values, 0)) AS \'\'\',\n"
    . "      parid,\'\'\'\'\n"
    . "    )\n"
    . "  ) INTO @sql\n"
    . "FROM\n"
    . "  est_paaram_value\n"
    . "WHERE recno=\'132\'");
$con->query("SET @sql = CONCAT(\'SELECT recno,year,qtr, \', @sql, \' FROM est_paaram_value WHERE recno='132' GROUP BY year,qtr\')");
$con->query("PREPARE stmt FROM @sql");
$res = $con->query("EXECUTE stmt");
var_dump($res->fetch_all(MYSQLI_ASSOC));
?>

( ! ) 致命错误:在c:\wamp\www\sme\querying.php的第46行对boolean上的成员函数fetch\u all()进行调用
没有显示结果。

gfttwv5a

gfttwv5a1#

正如u\u mulder和jeff所提到的,在双引号字符串中不需要转义单引号,而且还有太多的引号。
查询中似乎有一个错误,使 $con->query("EXECUTE stmt"); 失败并返回false,然后将其分配给$res。
清理查询,删除所有不必要的单引号和转义符,并在执行失败时添加输出,如下所示:

<?php
include("db.php");

$recno=$_GET['recno'];
$con->query('SET @sql = NULL');
$con->query("SELECT\n"
    . "  GROUP_CONCAT(DISTINCT\n"
    . "    CONCAT(\n"
    . "      MAX(IF(parid = '',\n"
    . "      parid,\n"
    . "      ``, par_values, 0)) AS ``,\n"
    . "      parid,''\n"
    . "    )\n"
    . "  ) INTO @sql\n"
    . "FROM\n"
    . "  est_paaram_value\n"
    . "WHERE recno='132'");
$con->query("SET @sql = CONCAT('SELECT recno,year,qtr, ', @sql, ' FROM est_paaram_value WHERE recno='132' GROUP BY year,qtr')");
$con->query("PREPARE stmt FROM @sql");
$res = $con->query("EXECUTE stmt");
if ($res) {
    var_dump($res->fetch_all(MYSQLI_ASSOC));
} else {
    echo "\nPDO::errorCode(): ", $con->errorCode();
    echo "\nPDO::errorInfo():\n";
    print_r($dbh->errorInfo());
}

注意:上面显示的代码可能仍然不起作用,因为没有关于数据库模式或实际要查询的内容的信息。但是它应该提供有关查询失败的原因的信息,以及错误代码和信息。

相关问题