PHP更新无法正常工作

时间:2013-01-28 05:46:50

标签: php sql pdo sql-update

我正在构建一个自定义CMS,我编写了一个假设的脚本来编辑我数据库中已有的信息。

之前我已经将代码用于不同的数据库并且它没有任何麻烦,但我已经更改了索引名称以引用新数据库,现在它将无法正常工作。

信息显示在带有“编辑”按钮的页面上,该按钮将用户链接到html表单,该表单在文本框中显示所选信息。

在表单中显示信息没有问题,但是一旦按下提交按钮,代码就不会执行它,信息也不会更新,也不会显示错误信息..

所以我很确定这个地方有问题......(忽略评论)

    if (isset($_GET['edittimeslot']))
    {   
       $timeslotid = $_GET['timeslotid']; 

       try
       {
          $sql = "SELECT timeslotid, Time FROM timeslots WHERE timeslotid = timeslotid" ;
          //echo $sql;
          $data = $pdo->query($sql);
          $timeslots = $data->fetch();
          //print_r($acts);
       }
       catch(PDOException $e)
       {
          echo "this didnt work" .$e->getMessage()  ;
       }

       $pagetitle = 'Edit your date here';
       $timeslotid = $timeslots['timeslotid'];
       $time = $timeslots['Time'];
       $button = 'Edit timeslot';
       include 'timeslot.form.php';
       exit();
    }


     // is all of the requested feilds appropiate
    if (isset($_POST['submit']) && $_POST['submit'] == 'Edit timeslot')
    {       
       // get the form data that was posted ready to insert into the stage database
       $timeslotid = $_POST['timeslotid'];
       $time= htmlspecialchars($_POST['time']);

       try
       {
           // prepare the query to insert data into stages table
           $sql = "UPDATE timeslots 
                                    SET Time = :Time,
                                    WHERE timeslotid = :timeslotid";

           $stmt = $pdo->prepare($sql);
           $stmt->bindParam(':Time', $time);
           $stmt->bindParam(':timeslotid', $timeslotid);
           $stmt->execute();
        }
        catch(PDOException $e)
        {
           //error message goes here if the insert fails
        }
  }

HTML:

        <!doctype html>
<head>
    <style type="text/css">
        .container {
            width: 800px;
            margin: 0 auto;
        }
    </style>
</head>
<body>
<div class="container">
<h1><?php echo $pagetitle;?></h1>


<form action='.' method='post'>
    <!-- stage name -->
    <p><label for='time'> What is the timeslots you would like to add? 00:00-00:00 </label></p>
    <p><input type='text' name='time' id='time' value='<?php echo $time;?>'> </p>
    <p><input type='submit' name='submit' value='<?php echo $button;?>'></p>
</form>

</div>
</body>

2 个答案:

答案 0 :(得分:1)

不应WHERE timeslotid = timeslotidWHERE timeslotid = $timeslotid

另外,直接使用表单值是个坏主意。至少使用它$timeslotid = (int)$_GET['timeslotid'];

答案 1 :(得分:0)

好的,我马上看到的一件事是这一行:

$timeslotid = $_POST['timeslotid'];

表单中的表单字段在哪里?我什么都看不到。还尝试将执行分配给变量和var_dump,以便您可以看到它是返回TRUE还是FALSE:

$success = $stmt->execute();
var_dump($success);

此外,请确保您的数据库列名为时间,而不是时间,全部为小写。