我知道这里曾多次询问过这个问题,但我向你们保证,我尝试了所有的建议,但这对我没有帮助。 (我猜因为这个错误是由很多因素造成的)。
这是我的代码:
$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和primary)*用户名*(varchar)* 密码*(varchar)*电子邮件*(varchar)*年龄*(int)*
表信息:IdPrimary *(int和primary)* idd *(int)* acre *(int)* alertlevel *(int)* offperc *(int)* deffperc *(int)* userlevel *(int)* upgradeavail *(INT)*
给我错误的那个位于第57行,即:
$stmt->bind_param("iiiiiii", $idd, $acre, $alertlevel, $offperc, $deffperc, $userlevel, $upgradeavail);
我用这个来确保选择准备工作确实有效。
if ($stmt === FALSE)
{
echo ($this->conn->error);
}
这表明我确实能够从表User
中获取Id echo $idd;
很抱歉这篇长篇文章,但我想给你所有可能的细节:) 谢谢你的帮助!
答案 0 :(得分:1)
我注意到你的标记中的空格。我不确定这是否允许。我自己从未这样做过,所以我无法确定地说话。
你有if($stmt -> execute())
的地方
也许你可以在空间关闭的情况下尝试一下,?
if($stmt->execute())
答案 1 :(得分:1)
事实证明你不能使用相同的$ stmt来INSERT到两个不同的表中。所以我所做的是创建一个名为$ connn的新$ conn并且它有效。 为什么它不可能插入两个不同的表是超出我的!希望有人能够阐明这一点。