我有一个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
则可行。
为什么会这样?
答案 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 *
中明确指定列。