此代码用于在激活按钮后将数据放入数据库,然后将其取下并替换为(问题保存!)。问题是它需要两次尝试让它消失(按钮)。 $ numofrow用于验证操作是否一旦进行(提交按钮的操作)。问题不是数据库,查询等,它真的是按钮。谢谢你的时间。
这是我的代码:
if(isset( $real_domaine)){
$tt = "SELECT*FROM uniwix.table0 WHERE id= '$id' ";
$rr = mysqli_query($database,$tt);
while($rows = mysqli_fetch_assoc($rr)){
[rows call...]
$md = "SELECT*FROM uniwix.table1 WHERE usern='$us' and question='$sujet'";
$ao = mysqli_query($database,$md);
$numofrow = mysqli_num_rows($ao);
if($numofrow == 0){
echo '<form action="" method="POST">
<input type="submit" name="sauvegarder" value="Save the question"/>
</form>';
if(isset($_POST['sauvegarder'])){
$qu = "INSERT INTO database (usern,question) VALUES('".$us."','".$sujet."')";
$sm = mysqli_query($database,$qu);
}
}else{
echo 'Question saved!';
}
//end of while loop
}
// end of if(isset( $real_domaine))
}
答案 0 :(得分:1)
问题不在于数据库,查询等,它真的是按钮。
按钮几乎是被动的,它只是在按下按钮时将数据发送到服务器。错误在于PHP代码的(缺乏)逻辑。
当脚本第一次运行时,$numofrow
为0
。它运行echo
,使用按钮生成表单,然后检查是否设置了$_POST['sauvegarder']
。当然,它没有设置,因为第一次加载页面时,会使用GET
方法。
用户按下按钮,使用POST
提交数据,然后代码再次运行。 $numofrow
仍然是0
(数据库中尚未插入数据),表单会再次显示,但这次设置了$_POST['sauvegarder']
并且收到的数据来自浏览器保存在数据库中。
您需要重新考虑您页面的逻辑。
更多,表格是空的。也许它有效,但这不是写表单的正确方法。您要发送到服务器的输入字段必须保留在表单中。
更重要的是,最重要的是,您的数据库代码是SQL注入的候选者。 不要使用字符串连接构建查询。使用prepared statements。另请阅读how prevent SQL injection in PHP。