我有以下表单并带有提交按钮:
<form id ="easytohard" class = "classtest" action="framework.php" method="POST">
<div class="test" style="display:none">
<input type="submit" name="easytohardbutton">
</div>
</form>
注意:我在代码中的此脚本上方有session_start();
。
当我按下“提交”时,按钮,我希望它更新标题为&#34; FUNCTIONSLEVEL&#34;在标题为“#34;答案”的数据库中。&#34;为此,我尝试使用以下代码:
<?php
$id = $_SESSION['id'];
if(isset($_POST['easytohardbutton'])){
$res6 = $db->query("SELECT FUNCTIONSLEVEL FROM answers WHERE id=$id");
$data6 = $res6->fetch_array();
if($data6['FUNCTIONSLEVEL']==0)$db->query("UPDATE answers SET FUNCTIONSLEVEL = 1 WHERE id=$id");
}
?>
下面是sql的屏幕截图,因此您可以看到我的数据库引用不应该出现任何问题。
谢谢!
答案 0 :(得分:3)
您不需要使用两个单独的查询,您可以在SQL中完成所有操作。你应该使用准备好的查询而不是字符串替换。
if(isset($_POST['easytohardbutton'])){
$stmt = $db->prepare("UPDATE answers SET functionslevel = 1
WHERE id = ? AND functionslevel = 0") or die($db->error);
$stmt->bind_param("i", $id);
$stmt->execute();
}
答案 1 :(得分:1)
由于您尚未开始会话,因此未进行更新。你需要把:
session_start();
每个页面您想要使用会话。所以你的$id
变量基本上没有任何东西。
更不用说它看起来像你正在使用PDO / Mysqli,为什么你不使用Prepared Statements呢?除了您要分配的问题而不是比较:
if($data6['FUNCTIONSLEVEL']=0)...
应该是:
if($data6['FUNCTIONSLEVEL']==0)....