mysqli_stmt_bind_result的优点是什么?

时间:2016-03-03 18:48:09

标签: php mysql

我将我的php / mySQL代码转换为使用预准备语句。 我可以看到准备SQL或DML和绑定参数的值(安全性等)。但我的查询按名称指定选择列表中的字段,我使用关联数组来访问它们。

或者,在这样的情况下,我是否需要对结果数组中的索引做出假设?

$listquery = "SELECT {$tables["result"]}.time, " .
             "       HOUR({$tables["result"]}.time), " .    // [1]
             "       MINUTE({$tables["result"]}.time), " .  // [2]
             "       SECOND({$tables["result"]}.time), " .  // [3]
             "       {$tables["rider"]}.id, {$tables["rider"]}.gender, " .
             "       {$tables["rider"]}.first, {$tables["rider"]}.last, " .
             "       {$tables["result"]}.dnf, " .
             "       {$tables["race"]}.courseid " .
             "  FROM {$tables["race"]}, {$tables["result"]}, {$tables["rider"]} " .
             " WHERE {$tables["race"]}.raceid = {$tables["result"]}.raceid " .
             "   AND {$tables["result"]}.riderid = {$tables["rider"]}.id" .
             "   AND {$tables["race"]}.raceid = ? " .
          " ORDER BY {$tables["result"]}.dnf, {$tables["result"]}.time ASC ";

1 个答案:

答案 0 :(得分:2)

如果您正在使用MYSQLND驱动程序,则可以使用mysqli_fetch_assocmysqli_stmt_bind_param来获取准备好的查询的结果。这两种方法都没有特别的好处。

如果您没有MYSQLND驱动程序,获取SELECT查询结果的唯一方法是使用mysqli_stmt_bind_param

使用关联数组来指定表名并不重要。您仍在AND {$tables["race"]}.raceid = ?中使用占位符,因此您需要准备查询。