4

好吧,这让我大吃一惊,我似乎在 PHP 文档中找不到任何东西,在 Google 结果圈中也找不到任何东西,所以也许有人可以在这里提供帮助。

我正在使用准备好的语句,绑定结果,然后使用这些绑定的结果来填充下拉列表。例子:

<option value="">Select artist</option>
<?php   
    $artistQuery = "SELECT ArtistID,ArtistName FROM Artist_v";
    if($artist = mysqli_prepare($link,$artistQuery)){
        mysqli_stmt_execute($artist);
        $artistResult = mysqli_stmt_bind_result($artist,$artistID,$artistName);

        while(mysqli_stmt_fetch($artist)){
?>
<option value="<?php echo $artistID; ?>"><?php echo $artistName; ?></option>
<?php
        }
        mysqli_stmt_close($artist);
    }
?>
<option value="Other">Add new...</option>

您可能会注意到有些事情有点奇怪。即:

$artistResult = mysqli_stmt_bind_result($artist,$artistID,$artistName);

mysqli_stmt_bind_result 的 PHP 文档中,没有任何理由将此结果捕获到变量中,这样的事情应该没问题:

mysqli_stmt_bind_result($artist,$artistID,$artistName);

不仅如此,我用来捕获结果的变量从未使用过。我捕获的唯一原因是因为不执行此捕获处理总是失败。就像......页面的其余部分甚至拒绝制作。我已经检查了mysqli_error(),,error_reporting(E_ALL); ini_set('display_errors', '1');所有你能想到的错误信息......什么都没有。

更糟糕的是,我的开发盒没有这个问题,我以前的托管服务提供商也没有……我换新的提供商时第一次遇到这个问题。这告诉我(a)我原来的 PHP 很好,并且(b)它可能是一个设置/选项问题。我只是不知道在哪里。

有没有人经历过这个?

顺便说一句,不要问我是如何得到变量捕获以使其工作的……这是一个多小时的反复试验,我无法告诉你我的想法是什么它。

4

1 回答 1

2

好吧,这真的不是一个血腥的答案,但我的问题已经解决了。

原来 5.4 版的实现是 sh**ty 什么的,因为我切换到让我的网站从 5.3 版运行,突然之间它工作了。

最重要的是,我感谢你们提供的所有帮助,但我必须强迫自己至少暂时使用旧版本的 PHP。那是我永远不会回来的四天。

编辑

我找到了一个真正的解决方案:切换托管服务提供商。从那以后再也没有遇到过这个问题。

于 2013-10-18T00:49:57.137 回答