为什么我的sql数据库更新无法提交?

时间:2016-01-14 01:06:33

标签: php sql database sql-update

我有以下表单并带有提交按钮:

<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的屏幕截图,因此您可以看到我的数据库引用不应该出现任何问题。

enter image description here

谢谢!

2 个答案:

答案 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)....