一尘不染

PHP 5.2.6的mysqli_stmt_get_result替代

mysql

我不是php专家,我开发了一个小型服务来查询mysql数据库。

但是,我使用php 5.4开发,然后发现我的虚拟主机计划具有5.2.6,因此对于一些未定义的函数,我遇到的问题很少。

具体来说,在这种情况下,如何解决> 5.3上可用的mysqli_stmt_get_result未定义函数?这是代码:

  $stmt = mysqli_prepare($con,$db_query);

  if($stmt) {

     mysqli_stmt_bind_param($stmt,'ss',$after,$lang);
     mysqli_stmt_execute($stmt);
     $result = mysqli_stmt_get_result($stmt); // <-- getting undefined error here !!!

     $updated = array();
     $deleted = array();

     while($row = mysqli_fetch_assoc($result)) {

        if($row['status']==1) {
           array_push($updated,$row);
        } else {
           $cardName=$row['cardName'];
           $cardStatus=$row['status'];
           $cardId=$row['cardId'];
           $language=$row['language'];
           array_push($deleted,array(
                    'cardName'=>$cardName,
                                    'status'=>$cardStatus,
                                    'cardId'=>$cardId,
                                    'language'=>$language
                               )
           );
        }
     }

     $response = array(
        'cards'=>array(
           'updated'=>$updated,
           'deleted'=>$deleted
        )
     );

     $json = json_encode($response);
     mysqli_close($con);
     echo $json;

  }

关键是我在使用准备好的语句,由于缺乏php知识,因此我发现没有其他方法可以解决该问题,而无需重写整个脚本。

我认为某些人可能有一个简单的解决方案。


阅读 275

收藏
2020-05-17

共1个答案

一尘不染

mysqli_stmt_get_result函数仅适用于PHP 5.3或更高版本。您的PHP 5.2.x版本不存在(不再受支持)。

替代方法是mysqli_stmt_bind_result与变量绑定一起使用。

在您的具体示例中,这甚至具有以下好处:您无需将数组成员分配给变量,因为您可以直接绑定变量。

mysqli_stmt_get_result之所以引入该函数,是因为有人认为这会妨碍您的工作,并且获取数组会更加容易。

2020-05-17