Sprintf,从预处理语句中获取不起作用


Sprintf, fetch, from Prepared Statement doesn't work

这段代码不起作用。我试图从传统的 mysqli 查询更改为预准备语句,但实际上并没有发生任何事情。

一些帮助?

<?php
include_once("config.inc.php"); // DataBase connection.
$collection = '100';
$results = $mysqli_conn->prepare("SELECT p.ID, p.Reference, p.Collection, p.Name, i.ImageOne FROM p INNER JOIN i ON p.Reference=i.Reference WHERE p.Collection=?");
if ($results === FALSE) {
  trigger_error($mysqli_conn->mysqli->error, E_USER_ERROR);
}
$results->bind_param("s", $collection);
$results->bind_result($ID, $Reference, $Collection, $Name, $ImageOne);  
$results->execute();
echo '<div class="scroll-pane">';
while ($results->fetch()) {
$body = '
<div class="product">
    <a href="/product.php?id=%s">
        <div>
            <div>
                <p class="txt">%s</p>
            </div>
            <div style="height:8em;margin:0 auto;">
                <img src="%s" style="width:100%;margin:0 auto;">
            </div>
        </div>
    </a>
</div>
';
sprintf($body, $ID, $Name, $ImageOne);
}
echo '</div>';
$results->free_result();
$results->close();

尝试切换执行语句和bind_result语句。

$results->execute();
$results->bind_result($ID, $Reference, $Collection, $Name, $ImageOne);

在调用 $results->execute(); 之前,没有要绑定到变量的结果。

mysqli_stmt::bind_results() 文档