Sprintf,fetch,来自Prepared Statement并不起作用

时间:2016-02-27 11:50:39

标签: php mysql mysqli prepared-statement

此代码不起作用。我试图从传统的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();

1 个答案:

答案 0 :(得分:0)

尝试切换execute和bind_result语句。

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

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

mysqli_stmt::bind_results() Documentation