mysqli准备SELECT查询不起作用

时间:2014-07-13 08:20:09

标签: php mysqli

我有一个PHP mysqli编写的SELECT语句,但它无法正常工作。以下是您需要了解的一些细节。

表名是' userbalance'。有2列,ID和余额。

目前,表格中只有1行,ID = 76561198061537594,余额= 10

ID是bigint,余额是小数。

这是我的代码:

require ('steamauth.php');
if(!isset($_SESSION['steamid'])) {  }
else {
    include ('userInfo.php');
}

include("conninfo.php");
$userid = $steamprofile['steamid'];
$query = "SELECT * FROM userbalance WHERE ID = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $userid);
$stmt->execute();
$stmt->bind_result($id, $credits);
$stmt->close();
echo "Credits: $credits";

如果我回复$userid,我会得到76561198061537594这是正确的ID。

但输出显示为Credits:。余额的10无法显示。

然而,如果我将WHERE ID = ?替换为WHERE ID = 76561198061537594则可行。

为什么会这样?

2 个答案:

答案 0 :(得分:0)

由于$userid是整数,因此您使用了错误的type(' s'对应于字符串);试试这个:

$stmt->bind_param('i', $userid);

答案 1 :(得分:0)

您准备好的语句正在运行,但是您永远不会获取结果。如果使用结果绑定,则需要使用fetch()方法为结果变量分配值。

$stmt = $mysqli->prepare("SELECT ID, balance FROM userbalance WHERE ID = ?");
$stmt->bind_param('s', $userid);
$stmt->execute();
$stmt->bind_result($id, $credits);
$stmt->fetch();
echo "Credits: $credits";

另一个建议:您应该在SELECT ID, balance中而不是SELECT *中明确指定列。