Php消息更新程序清除行而不是更新它

时间:2013-06-24 08:54:48

标签: php sql post mysqli prepared-statement

我使用以下脚本来处理更新我网站上的消息的表单,我遇到的问题是它正在清除行而不是因某种原因更新它。我已经从Phpmyadmin复制了查询,所以我知道它是正确的,我也尝试回应已发布的值,它们也很好地回应,但是由于某些未知的原因,当我在表单中单击提交时它只是擦除了内容记录而不是更新它。

<?php
    include("connectmysqli.php");

    if (isset($_POST['OnOff'])) {$OnOff = $_POST['OnOff'];}else {$OnOff = '';}
    if (isset($_POST['title'])) {$title = $_POST['title'];}else {$title = '';}
    if (isset($_POST['message'])) {$message = $_POST['message'];}else {$message = '';}

    $stmt = $db->prepare("UPDATE `itsnb_chronoforms_data_urgentform` SET  `title` =  '$title',`message` =  '$message',`OnOff` =  '$OnOff' WHERE `cf_id` =1;");
    if (!$stmt) trigger_error($db->error);
    $stmt->execute(); 

    echo 'Message Updated !';
    echo '<p><a href="index.php?&key='.$key.'">Back To Main Menu</a></p>';
    ?> 

这是表格:

enter image description here

1 个答案:

答案 0 :(得分:1)

你是否回应了生成的查询?

我确实会发现这种情况会发生:

  1. 您的表单输入名称与您在三个if语句中检查的帖子密钥不匹配
  2. 您没有使用method =“post”
  3. 发送表单

    如果所有三个帖子字段都设置且有效,您也应该只执行更新查询。像标题和消息一样不能为空/空,并且onOff变量应该包含“on”或“off”。否则回显错误消息,以便用户知道他的输入有什么问题。