【问题标题】:PHP Mysqli fetch_assocPHP Mysqli fetch_assoc
【发布时间】:2010-11-07 18:49:47
【问题描述】:

PHP 的 MySQLi 功能很棒。

Prepared Statements 非常适合在查询中注入参数。

但是,如果您使用语句,您似乎无法再访问 fetch_assoc 功能。您必须手动绑定所有结果。这意味着我的 SQL 查询必须列出所有字段,然后我必须在获取结果时提前列出所有变量(使用 bind_result)。这会变得非常烦人和浪费时间。

还有其他选择吗?

谢谢

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    是的,它被称为PDO,通常比 MySQLi 更受欢迎。它提供带有常规获取选项的语句,并且不会强制您显式绑定所有参数。一个典型的查询可能如下所示:

    $stmt = $db->prepare("SELECT * FROM foo WHERE a = ?");
    $stmt->execute(array($a));
    
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    

    PDO 非常灵活,因此也可以以其他方式使用。手册中有很多很好的例子。看看吧!

    【讨论】:

    • 很好,PDO 看起来比使用 mysqli 准备语句要少一些痛苦:)
    【解决方案2】:

    MySQLi 确实提供了处理这个的方法,看看 result_metadata 函数。

    我编写了一个类以允许轻松的参数化 MySQLi 查询 - 下载和基本使用信息可在此处获得:http://www.robpoyntz.com/blog/?p=191

    【讨论】:

    • 如果您有兴趣,我已经使用相同的接口创建了一个 PDO 版本,因此可以替换上面的 MySQLi 代码。有趣的是,PDO 版本的运行速度似乎比 MySQLi 版本快了近 50%。源代码在这里:robpoyntz.com/blog/?p=260
    • 链接已损坏,答案不再包含修复。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2023-03-26
    • 2013-10-05
    相关资源
    最近更新 更多