【发布时间】:2010-11-07 18:49:47
【问题描述】:
PHP 的 MySQLi 功能很棒。
Prepared Statements 非常适合在查询中注入参数。
但是,如果您使用语句,您似乎无法再访问 fetch_assoc 功能。您必须手动绑定所有结果。这意味着我的 SQL 查询必须列出所有字段,然后我必须在获取结果时提前列出所有变量(使用 bind_result)。这会变得非常烦人和浪费时间。
还有其他选择吗?
谢谢
【问题讨论】:
PHP 的 MySQLi 功能很棒。
Prepared Statements 非常适合在查询中注入参数。
但是,如果您使用语句,您似乎无法再访问 fetch_assoc 功能。您必须手动绑定所有结果。这意味着我的 SQL 查询必须列出所有字段,然后我必须在获取结果时提前列出所有变量(使用 bind_result)。这会变得非常烦人和浪费时间。
还有其他选择吗?
谢谢
【问题讨论】:
是的,它被称为PDO,通常比 MySQLi 更受欢迎。它提供带有常规获取选项的语句,并且不会强制您显式绑定所有参数。一个典型的查询可能如下所示:
$stmt = $db->prepare("SELECT * FROM foo WHERE a = ?");
$stmt->execute(array($a));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
PDO 非常灵活,因此也可以以其他方式使用。手册中有很多很好的例子。看看吧!
【讨论】:
MySQLi 确实提供了处理这个的方法,看看 result_metadata 函数。
我编写了一个类以允许轻松的参数化 MySQLi 查询 - 下载和基本使用信息可在此处获得:http://www.robpoyntz.com/blog/?p=191
【讨论】: