当前位置: 首页 > 面试题库 >

PHP 5.2.6的mysqli_stmt_get_result替代

漆雕修能
2023-03-14
问题内容

我不是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知识,因此我发现没有其他方法可以解决该问题,而无需重写整个脚本。

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


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: 我不断收到错误PHP致命错误:调用未定义函数mysqli_stmt_get_result()。我正在使用PHP版本5.6,并在主机提供商c面板中启用了扩展mysqlind,但我不知道为什么仍然出现此错误。我进行了研究,发现每次需要启用mysqli nd才能使用mysqli_stmt_get_result。任何人都可以协助/教导我在做什么错。谢谢。 SIGNUP.PHP: 问题答案: 您

  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 我执行了一个程序包管理器命令,将我们的项目更新为最新的二进制文件。我几乎发布了它,因为它通过了所有测试,直到幸运的是,我发现了一个需要更多调试的问题。 当我突然看到以下异常消息时,我的嘴张开了: 已达到“每小时6000个Redis请求”的免费配额限制。请访问https://servicestack.net升级到商业许可证。 如果我发布了该网站怎么办?这些做法简直令人反感!没有控制台警告

  • 问题内容: 我要求对当前使用JFileChooser的小程序进行一些更改。 主要的抱怨之一是文件选择器的使用很麻烦,因为它的行为与本机窗口小部件不同,特别是在向上导航到根级别时。 因此,知道JFileChooser以及所有其他问题(例如Windows上的zip文件缓存…)遭受苦难后,我想知道Java世界中是否存在可行的替代方案。 当然,有SWT使用本机窗口小部件,但是将applet大小增加25并不

  • 问题内容: 一个(很久以前),我写了一个网络蜘蛛,我对该线程进行了多线程处理,以使并发请求能够同时发生。那是我的Python青年时代,在我了解GIL及其为多线程代码造成的相关麻烦之前(IE,大多数时候,这些东西最终都被序列化了!)… 我想对这段代码进行重做,以使其更健壮并性能更好。基本上有两种方法可以执行此操作:我可以使用2.6+中的新多处理模块,也可以使用某种基于反应堆/事件的模型。我宁愿以后再