【发布时间】:2015-03-09 12:07:22
【问题描述】:
我知道这已经被问过好几次了,但我向你保证我尝试了每一个建议,但这对我没有帮助。 (我猜是因为这个错误是由多种因素造成的)。
这是我的代码:
$stmt = $conn->prepare("INSERT INTO User (Username, Password, Email, Race) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $Username, $Password, $Email, $Race);
if($stmt->execute())
{
$stmt = $conn->prepare("SELECT Id FROM User WHERE Username=?");
if ($stmt === FALSE)
{
echo ($this->conn->error);
}
$stmt->bind_param("s", $Username);
if($stmt -> execute())
{
$stmt -> bind_result($idd);
$stmt -> fetch();
echo $idd;
$acre=1000;
$alertlevel=0;
$offperc=0;
$deffperc=0;
$userlevel=1;
$upgradeavail=0;
$stmt = $conn->prepare("INSERT INTO Info (idd, acre, alertlevel, offperc, deffperc, userlevel, upgradeavail) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("iiiiiii", $idd, $acre, $alertlevel, $offperc, $deffperc, $userlevel, $upgradeavail);
if($stmt -> execute())
{
echo "";
}
else
{
echo "false";
}
}
else
{
echo "false";
}
}
else
{
echo "false";
}
那是我的 SQL 表:
表用户:Id*(int and primary)* 用户名*(varchar)* 密码*(varchar)* 邮箱*(varchar)* 年龄*(int)*
表信息:IdPrimary*(int and primary)* idd*(int)* acre*(int)* alertlevel*(int)* offperc*(int)* defperc*(int)* userlevel*(int)* 升级可用*(int)*
给我的错误位于第 57 行,即:
$stmt->bind_param("iiiiiii", $idd, $acre, $alertlevel, $offperc, $deffperc, $userlevel, $upgradeavail);
我用它来确保选择准备工作正常。
if ($stmt === FALSE)
{
echo ($this->conn->error);
}
这表明它确实能够从表 User 中获取 Id
echo $idd;
很抱歉这篇文章很长,但我想给你所有可能的细节:) 感谢您的帮助!
【问题讨论】:
-
在调用
bind_param之前写var_dump($stmt)并告诉我们结果 -
得到的回复是:bool(false)
-
这意味着数据库未能初始化准备好的语句。使用您的最后一个错误消息函数来查看它的内容。
标签: php mysql sql-server