更新不在数据库中工作

时间:2015-04-24 23:00:34

标签: php html mysql

我有这个问题:当我提交表单时,页面只刷新而不是更新数据库..:ss

<?
error_reporting(0);
require('cdn/inc/header.php'); 

if(isset($_SESSION['user_data'])):
$user_level = $_SESSION['user_data']['level'];


switch($user_level):
case 1:
case 2: 
case 3: 
case 5:
case 8:
case 9:

$query = "SELECT * FROM testes WHERE ID = :ID";
$result = $db->prepare($query);
$result->execute(array(':ID' => $_REQUEST['ID']) );
if ($row = $result->fetch(PDO::FETCH_ASSOC)) { 
?>


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 

  <input id="Title" type="text" name="Title" value="<?php echo $row['Title']; ?>" required />


 <input type="hidden" name="ID" value="<?php echo $row['ID']; ?>" />
 <input type="Submit" name="Submit" value="Salvar alterações" />
</form>

<? 
 } 
 elseif (isset($_POST['Submit'])) {
 $ID = $_POST['ID']; 

 $Title = $_POST['Title'];

  $queryupdate = "UPDATE testes SET Tile = :Title WHERE ID= :ID";   
 $q = $db->prepare($queryupdate);
 $q->execute(array(":Title" => $Title, ":ID" => $ID));
 header ('Location: edit.php');} 

 else {
 $stmt = $db->query("SELECT * FROM testes ORDER BY STR_TO_DATE(Date, '%d-%m-%y') ASC, Title ASC);
 $stmt->execute();
 $data = $stmt->fetchAll(PDO::FETCH_ASSOC);?>

 <div id="user-bar" style="background: #C16011;">
  <i>
   <a href="add.php">Adicionar</a>
  </i>
 </div>

 <br />
 <br />

 <?
 foreach($data as $index => $row) { 
 $className = $index % 2 == 0 ? "class" : "class-1" ?>

<form action="" name="Inser" method="post">
 <div class="selector">
  <input name="selector[]" class="selector" type="checkbox" value="<?php echo $row['ID']; ?>" />
 </div>

   <a href="edit.php?ID=<? echo $row['ID']; ?>"><? echo $row['Title']; ?></a>


   </div>
  </h6>
 </div>

<?
 }
 if(empty($data)){?>

 <div class="no-data">
  DATA/HORA: <b><?echo date("d-m-Y");?></b>/<b><? echo date("H:i");?></b>
 <br />
  SEM NADA
 </div>

<?}
else
{?>

 <div class="btn-padding">
  <div class="btn-group dropup pull-right">
   <button type="button" class="btn btn-primary">Seleciona uma acção</button>
   <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
    <span class="caret"></span>
    <span class="sr-only"></span>
   </button>
   <ul class="dropdown-menu dropdown-menu-right" role="menu">
    <li><a href="" class="selectall-button" onClick="return false;">Selecionar tudo / Nao selecionar</a></li>
    <li class="divider"></li>
    <li><a href="#" type="submit" class="delete-button"onclick="javascript:document.Insert.submit();">Eliminar</a></li>
   </ul>
  </div>
 </div>
</form>


 <?
 }
 $edittable=$_POST['selector'];
 $N = count($edittable);
 for($i=0; $i < $N; $i++)
 {
 $result = $db->prepare("DELETE FROM testes WHERE ID= :ID");
 $result->bindParam(':ID', $edittable[$i]);
 $result->execute();
 header ('Location: edit.php'); 
 }
 } 
?>

 <br />
 <br />

 <center>
  <small>TESTE.</small>
 </center>


</body>
</html>

<?
break;
 endswitch;
 else:
 header( 'Location: ../ ');
 endif;
?>

任何人都知道如何解决这个问题? 我没有ideia如何解决这个问题,我尝试了一切,但问题还在继续..

2 个答案:

答案 0 :(得分:2)

提交表单时,会再次执行相同的php文件。因此,您必须首先检查$SESSION$POST并执行操作,然后再执行其他操作,包括吐出表单标题。

答案 1 :(得分:1)

首先,看起来你错过了PHP字符串末尾的双引号,在开头的行上:

$stmt = $db->query("SELECT *

另一方面,当您调试问题时,为什么以sam scratch的名义关闭错误报告...

error_reporting(0);
                ^

你说你已经尝试过“一切”。我建议你至少尝试打开错误报告,并用字符串文字修复明显的问题。

参考:http://ericlippert.com/2014/03/05/how-to-debug-small-programs/

`error_reporting(E_ALL); 

参考http://php.net/manual/en/function.error-reporting.php

我强烈怀疑PDO的错误也被抑制了。

您的表 testes 实际上是否有一个名为 Tile 的列,或者列名是否真的 Title

如果SQL语句中存在错误,那么PDO将捕获该错误;如果您从PDO启用错误报告,PDO将报告错误。