这是我的代码:
$stmt1 = $db->prepare("SELECT wins FROM users WHERE id = ?");
$stmt2 = $db->prepare("SELECT losses FROM users WHERE id = ?");
$stmt1->bind_param("i", $_SESSION["id"]);
$stmt2->bind_param("i", $_SESSION["id"]);
$stmt1->bind_result($db_wins);
$stmt2->bind_result($db_losses);
$stmt1->execute();
$stmt2->execute();
$stmt1->fetch();
$stmt2->fetch();
// Print out user scores
echo "<p><strong>User:</strong> " . $_SESSION["username"] . "</p>\n";
echo "<p><strong>Wins:</strong> " . $db_wins . "</p>\n";
echo "<p><strong>Losses:</strong> " . $db_losses . "</p>\n";
除了损失之外,所有内容都打印正确,在应该打印表格中的值时会打印0。
注意事项:
答案 0 :(得分:1)
我同意上面Kolink的评论,但我认为将代码更改为以下代码也会使问题消失。 PHP pages提供以下替代方案,也许这也适用于您的情况?编辑:显然你仍然可以将bind_param包含在内。
/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($col1, $col2);
/* fetch values */
while ($stmt->fetch()) {
printf("%s %s\n", $col1, $col2);
}
/* close statement */
$stmt->close();
}
答案 1 :(得分:0)
您使用的fetch()
没有参数,因此默认情况下它应该返回您想要的数据。如果您传入的PDO::FETCH_BOUND
可能会触发绑定操作per the documentation。
答案 2 :(得分:0)
您是否尝试计算($ db_losses)而不是仅打印变量?
有时Mysql数组中的指针不在第一个元素处,而是保留在打印0的数组的最后一个元素上!
尝试在数组上使用reset()函数。 http://www.php.net/reset