PHP致命错误,调用未定义的方法mysqli_stmt :: get_result()

时间:2013-06-06 17:39:17

标签: php mysql sql sqlite pdo

在尝试将代码切换到我的实时服务器时,我似乎遇到了一个奇怪的问题。它可以在我的本地WAMP服务器上运行,但是在我的实时服务器上,当我尝试从数据库中提取信息并将其放入表中时,我在error_log中的问题标题中出现错误。

这是导致错误的代码:

<?php
  $query            = 'SELECT * FROM APPLICATIONS';
  $stmt             = $dbConnection->prepare($query);
  $stmt->execute();
  $result           = $stmt->get_result();
  $num_applications = $result->num_rows;
?>

具体来说:$ result = $ stmt-&gt; get_result();

我联系了我的服务器主机,以确保安装了正确版本的PHP。他们让我将以下内容添加到我的php.ini文件中:

extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
extension=pdo_mysql.so

我这样做了,但它没有解决问题。然后他们告诉我它必须是我的代码。从我阅读的文档中,并在我的本地服务器上体验它,代码似乎是正确的,或许我需要一个外部视角。

以下是我调用数据的表格:

<table class="table table-hover table-striped table-bordered table-condensed">
    <tr>
        <th style="text-align:center;">Application ID</th>
        <th style="text-align:center;">Last Name</th>
        <th style="text-align:center;">First Name</th>
        <th style="text-align:center;">Organization</th>
        <th style="text-align:center;">Title</th>
        <th style="text-align:center;">Link to View</th>
    </tr>

  <?php
    for ($i = 0; $i < $num_applications; $i++) {
      $row = $result->fetch_assoc();

      $id = $row['ID'];
      $last_name = $row['LAST_NAME'];
      $first_name = $row['FIRST_NAME'];
      $organization = $row['ORGANIZATION'];
      $title = $row['TITLE'];

      $link = '<a href="../view_application.php?id='.$id.'"><i class="icon-external-link" style="color:#1122CC;"></i></a>';

      echo
      "<tr>
        <td style='text-align:center;'>$id</td>
        <td style='text-align:center;'>$last_name</td>
        <td style='text-align:center;'>$first_name</td>
        <td style='text-align:center;'>$organization</td>
        <td style='text-align:center;'>$title</td>
        <td style='text-align:center;'>$link</td>
      </tr>";
    }
  ?>
</table>

评论者在文件的前面询问了$ dbConnection的定义位置:

<?php
    $db_host = 'localhost';
    $db_port = '3306';
    $db_username = 'user';
    $db_password = 'password';
    $db_primaryDatabase = 'dbname';

    // Connect to the database, using the predefined database variables in /assets/repository/mysql.php
    $dbConnection = new mysqli($db_host, $db_username, $db_password, $db_primaryDatabase);

    // If there are errors (if the no# of errors is > 1), print out the error and cancel loading the page via exit();
    if (mysqli_connect_errno()) {
        printf("Could not connect to MySQL databse: %s\n", mysqli_connect_error());
        exit();
    }
?>

2 个答案:

答案 0 :(得分:0)

只是问一下,您确定已添加的扩展程序已加载吗?

也许问题存在与否。希望有所帮助。

答案 1 :(得分:0)

mysqli_stmt :: get_result仅适用于 mysqlnd 包(php扩展名)。

(php5-mysqlnd)不在(php5-mysql)