好吧所以这会让我的垃圾漏掉,我似乎无法在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);
在PHP documentation for mysqli_stmt_bind_result中没有任何理由将此结果捕获到变量中,这样的事情应该没问题:
mysqli_stmt_bind_result($artist,$artistID,$artistName);
不仅如此,我从未使用过用于捕获结果的变量。我捕获的唯一原因是因为没有执行此捕获处理总是失败。就像...页面的其余部分甚至拒绝生产。我已经检查了mysqli_error()
,error_reporting(E_ALL); ini_set('display_errors', '1');
,您可以想到的所有错误消息......没有。
更糟糕的是,我的开发框没有这个问题,也没有我以前的托管服务提供商......当我改为新的提供商时,我首先遇到了这个问题。这告诉我(a)我的原始PHP很好,(b)它可能是一个设置/选项问题。我根本不知道在哪里。
有没有人经历过这个?
顺便说一句,不要问我是如何到达变量捕获的东西才能让它工作......这是一个多小时的试错会议,我无法告诉你我的想法是为了尝试它。
答案 0 :(得分:2)
好的,这真的不是一个血腥的答案,但我的问题已经解决了。
事实证明,版本5.4的实现很简单,因为我改用了我的网站运行版本5.3并且突然之间它运行了。
最重要的是,我感谢你们提供的所有帮助,但我必须强迫自己暂时使用旧版本的PHP。这是我永远不会回来的四天。
修改强>
我找到了一个真正的解决方案:切换托管提供商。从那时起就没有遇到过这个问题。