如何将变量的数据传递到同一页面的其余部分?

时间:2017-10-17 05:41:08

标签: php mysqli

我很容易通过以下方式完成这项工作:

if(mysqli_num_rows($result) > 0){
    while ($row = mysqli_fetch_array($result)) {
        $id_product = $row['id_courses'];
        $product = $row['product'];
        $title = $row['title'];
        $subtitle = $row['subtitle'];
        $price = $row['price'];
    }
}

然后只在页面的任何部分打印变量的值,如下所示:

echo $product;

如何使用面向对象的查询执行相同操作?

  

与上一个查询一样,此查询也有效,我执行相同的过程并正确打印值:

echo $product;

但在以下查询中将此代码while ($stmt->fetch()) {}留空是正确的

$stmt->bind_param("i",$active);
$stmt->execute();
$stmt->bind_result( $id_product,$product,$subtitle,$price);

      while ($stmt->fetch()) {

      }

1 个答案:

答案 0 :(得分:0)

摆脱while

对你的旧方法没用,并且对第二种方法有害。

你必须明白,虽然这不是数据库交互的必要部分,而是获得多个行的方法。但是因为你只提取了一行,所以根本不应该使用它。

您的第一个代码块应该是

$result = mysqli_query(...);
$row = mysqli_fetch_array($result);
$id_product = $row['id_courses'];
...

和第二个

$stmt->bind_param("i",$active);
$stmt->execute();
$stmt->bind_result( $id_product,$product,$subtitle,$price);
$stmt->fetch();

在第一个块中你手动保存变量,而这就是它们在循环外可用的原因。但是在第二种情况下,它们直接由fetch()方法填充,因此当不再有数据时,它会在最后一次迭代时将它们全部清空。