Mysqli 抽象,从准备好的语句中获取数组

2024-01-12

最近,我在一个曾经工作得很好的库中偶然发现了一个错误,如果我能找出它在哪里,我就该死了。

代码示例如下,我对其中的调试内容表示歉意,但我正在努力使其正常工作。

问题是 $temp 是一个具有正确键(列名)的数组,但所有值都是 NULL。

我认为问题在于

call_user_func_array(array($query, 'bind_result'), $params);

有点,但我无法真正理解它。

public function fetchRows(){
    error_reporting(E_ALL+E_NOTICE);
    $args = func_get_args();
    $sql = array_shift($args);
    traceVar($sql, "Query");
    $colTypes = array_shift($args);
    if (!$query = $this->prepare($sql, $colTypes)) {
        die('Please check your sql statement : unable to prepare');
    }
    if (count($args)){
        traceVar($args,'Binding params with');
        call_user_func_array(array($query,'bindParam'), $args);
    }

    $query->execute();

    $meta = $query->result_metadata();
    while ($field = $meta->fetch_field()) {
        $params[] = &$row[$field->name];
    }
    traceVar($params,'Binding results with');
    call_user_func_array(array($query, 'bind_result'), $params);

    while ($query->fetch()) {
        traceVar($row,'After fetch');
        $temp = array();
        foreach($row as $key => $val) {
            $temp[$key] = $val;
        } 
        $result[] = $temp;
    }

    $meta->free();
    $query->close(); 
    //self::close_db_conn(); 
    return $result;
}

如果我们可以在启动时选择服务器,我们可以使用 php-mysqlnd 模块来代替 PHP 的 php-mysql 模块。 (或者你们中的一些人可能已经在使用它,运行“phpinfo();”并搜索“mysqlnd”):

public function fetchRows(){
    ...
    $query->execute();

    $res = $query->get_result();
    while (($row = $res->fetch_assoc()))
        $result[] = $row;
    return $result;
    }
}

这对我来说似乎更简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysqli 抽象,从准备好的语句中获取数组 的相关文章

随机推荐

  • Fluent NHibernate 有很多外键映射问题

    我正在尝试在 nhibernate 中映射一个简单的数据结构 Tables Employees employeeID int username varchar 30 departmentID int Departments departme
  • 如何将 Spring Boot 应用程序日志文件读取到 Splunk 中? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望将日志数据从应用程序发送到 Splunk 我发现这与spring无关 只是Splunk需要一些配置来读取应用程序的日志文件 我想知道
  • 我可以将 SQL Server Management Studio 2005 用于 2008 DB 吗?

    我希望使用 Management Studio 2005 管理 SQL Server 2008 DB 原因是我们的服务器是 64 位计算机 而我们只有 64 位版本的软件 这可能吗 使用 Management Studio 2008 管理
  • 使用 stackalloc 分配的内存的初始化

    如果我分配内存stackalloc in C 内存是否已初始化 with 0 该文档没有提到这一点 只是告诉我们保留了正确的金额 在我的测试中 这种内存默认为0 但这并不意味着它是有保证的 从规格来看 18 8 堆栈分配 新分配的内存的内容
  • 如何重写WPF路由命令调度机制

    我可以以某种方式扩展 WPF 命令路由 以便它首先检查命令是否可以在聚焦字段中调用 如果不能在其他字段中调用 永远不会改变 有什么钩子吗 也许您不知道这是否可行 但在网络上的某个地方看到了类似的内容并且可以保留链接吗 抽象例子 例如 如果我
  • WebRTC:如何为视频编码器启用硬件加速

    我正在尝试在 WebRTC 的帮助下将屏幕捕获的视频发送到 mediasoup WebRTC 库中有一个类 Android 屏幕捕捉器 它可以工作 但在某些设备上的性能非常糟糕 特别是当我使用高清或更好的显示分辨率时 在 stackover
  • OpenCV:链接错误,无法解析外部符号 _cvResize 和 _cvCvtColor

    链接错误的原因很清楚 我的链接过程中缺少一些库 不幸的是 OpenCV 2 4 1 似乎改变了它的内部结构 所以我通过 Google Stackoverflow 搜索功能找到的解决方案只建议我链接到不再存在的库 cv lib 或 cxcor
  • 使用c#生成不记名令牌

    我有一个网络应用程序 我的要求是我需要在每次登录时生成 oauth2 不记名令牌 目前我们使用thinktecture来生成token 但是这个过程每次生成token大约需要7秒的时间 有什么方法可以在不使用 thinktecture 的情
  • SwiftUI 共享表导致 iPad 崩溃

    我正在关注这个教程https jeevatamil medium com how to create share sheet uiactivityviewcontroller in swiftui cef64b26f073 https je
  • 如何用eclipse安装android?

    我想用 eclipse 安装 android sdk 我也使用 Ubuntu 作为操作系统 请给予支持以及关于android的良好学习材料 Regards 要开始使用 Eclipse 进行 Android 开发 您必须安装ADT Plugi
  • 如何使用 glassfish v4 将 http 重定向到 https

    我们在 Glassfish v4 上创建了一个网站 它使用端口 8080 作为 http 使用端口 8081 作为 https 我们的思科防火墙将对端口 80 的请求转发到端口 8080 并将对端口 443 的请求转发到端口 8081 但我
  • 如何使用Eclipse IDE调试基于JavaFX 11的Maven项目(2019-03)

    问题 我无法使用建议的方法调试使用 Eclipse IDE 2019 03 4 11 0 编写和启动的基于 JavaFX 11 的 Maven 项目并用于相关问题 https stackoverflow com questions 5652
  • 如何在 R 中创建 (100%) 堆叠直方图?

    我的数据集 我有以下格式的数据 此处是从 CSV 文件导入 您可以找到 CSV 格式的示例数据集here http cl ly 3F1u0W2b3y081v172A2O PAIR PREFERENCE 1 5 1 3 1 2 2 4 2 1
  • Twig 在第一个特定字符作为分隔符后分割字符串

    我有一个与以下情况相同的问题这个问题 https stackoverflow com q 17304739 6578454 除了可能发生不止一个 是在正文中 一个例子 57b42a0557cdd Filename whatever pdf
  • 将 QWidget 嵌入 X11 窗口

    我想将两个 QWidget 嵌入到使用 XLib 创建的窗口中 我写了这段代码 Assume all the necessary headers included int main int argc char argv QApplicati
  • App Engine Datastore IN 运算符 - 如何使用?

    阅读 http code google com appengine docs python datastore gqlreference html http code google com appengine docs python dat
  • QPushButton:如何对齐图标和文本

    使用 Qt C 我有一些带有图标和文本的按钮 由于所有按钮的文本长度不同 图标未对齐 我尝试使用 QToolButton 代替 button gt setToolButtonStyle Qt ToolButtonTextBesideIcon
  • 在初始化时使用 attr_accessor 设置 ruby​​ 2.0 关键字参数

    如何动态设置而不需要全部编写相同的代码 现在代码如下所示 def initialize keywords keywords title title url url adsetting adsetting self keywords keyw
  • C# 睡眠 500 毫秒

    您能告诉我如何将程序暂停 500 毫秒然后继续吗 I read Thread Sleep 500 不好 因为它会占用 GUI 线程 使用计时器它会触发回调 我只想等待 500 毫秒 然后继续下一条语句 请指教 编辑 我需要显示状态栏消息 5
  • Mysqli 抽象,从准备好的语句中获取数组

    最近 我在一个曾经工作得很好的库中偶然发现了一个错误 如果我能找出它在哪里 我就该死了 代码示例如下 我对其中的调试内容表示歉意 但我正在努力使其正常工作 问题是 temp 是一个具有正确键 列名 的数组 但所有值都是 NULL 我认为问题