【问题标题】:MySQLi - Fetch Array and Prepared StatementMySQLi - 获取数组和准备好的语句
【发布时间】:2012-08-08 13:13:37
【问题描述】:

我想显示表格中的行,但它不起作用,它不回显任何内容。

$query = "SELECT * FROM table ORDER BY date DESC LIMIT ?, 10";
$stmt = $mysqli->stmt_init();
if ($stmt->prepare($query)) {

    $stmt->bind_param("i", $row_start);
    $stmt->execute();
    $stmt->bind_result($result);
    $stmt->fetch();
    $stmt->close();
}
while($row = mysqli_fetch_array( $result )) {
    echo $row['title'];
}

我有旧 mysql ext 的代码,它可以工作。尝试使用 mysqli 获得相同的结果。

【问题讨论】:

  • 可笑的是,fetch_array() 不适用于准备好的语句。您使用了bind_result(),这使得整个过程变得更加笨拙。这是我尽可能使用 PDO 而不是 MySQLi 的主要原因之一。
  • @DaveRandom 我认为 MySQLi 是原始 ext 的改进版本...不知道有这样的限制。我想我必须搬到 PDO。

标签: php arrays mysqli prepared-statement


【解决方案1】:

阅读以下链接:-

Mysqli abstraction, fetching arrays from prepared statements

call_user_func_array(...) 函数只是使用给定数组调用 $query 对象上的 bindParam 或 bind_result 方法,就好像您已将数组的每个元素作为方法参数提供一样。

您可能希望使用以下代码检查您遇到问题的 SQL 语句。为了使其完全可测试,我对其进行了一些重写,因为原始代码依赖于抽象层中的语句类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2011-03-07
    • 2012-12-01
    • 1970-01-01
    • 2011-05-28
    • 2013-07-19
    • 1970-01-01
    相关资源
    最近更新 更多