2015-06-18 4 views
1

Дополнение от 23.06.2012PHP SQL не обновит данные

Запрос на обновление по-прежнему не работает. Получил совет от Рене Кросса и сделал некоторую очистку кода и наткнулся на несколько недостающих точек с запятой и т. Д., Однако запрос обновления все еще не работает.

Вот adminUpdate.php

<?php 
 
\t 
 
\t require 'Connect.php'; 
 

 
\t $staffID = null; 
 
\t if (!empty($_GET['staffID'])) { 
 
\t \t $staffID = $_REQUEST['staffID']; 
 
\t } 
 
\t 
 
\t if (null==$staffID) { 
 
\t \t header("Location: ManageAdministrator.php"); 
 
\t } 
 
\t 
 
\t if (!empty($_POST)) { 
 
\t \t // keep track validation errors 
 
\t \t 
 
\t \t $adminNameError = null; 
 
\t \t $emailError = null; 
 
\t \t $SKGError = null; 
 
\t \t $ExtnError = null; 
 
\t \t 
 

 
\t \t // keep track post values 
 
\t \t 
 
\t \t $adminName = $_POST['adminName']; 
 
\t \t $email = $_POST['email']; 
 
\t \t $SKG = $_POST['SKG']; 
 
\t \t $Extn = $_POST['Extn']; 
 
\t \t 
 

 
\t \t // validate input 
 
\t \t $valid = true; 
 
\t \t 
 
\t \t if (empty($adminName)){ 
 
\t \t \t $adminNameError = "Please enter Administrator Name"; 
 
\t \t \t $valid = false; 
 
\t \t } 
 
\t \t 
 
\t \t if (empty($email)) { 
 
\t \t \t $emailError = 'Please enter Email Address'; 
 
\t \t \t $valid = false; 
 
\t \t } else if (!filter_var($email,FILTER_VALIDATE_EMAIL)) { 
 
\t \t \t $emailError = 'Please enter a valid Email Address'; 
 
\t \t \t $valid = false; 
 
\t \t } 
 
\t \t 
 
\t \t if (empty($SKG)) { 
 
\t \t \t $SKGError = 'Please choose SKG'; 
 
\t \t \t $valid = false; 
 
\t \t } 
 
\t \t if(empty($Extn)){ 
 
\t \t \t $ExtnError = "Please enter Extension Number"; 
 
\t \t \t $valid = false; 
 
\t \t } 
 
\t \t 
 
\t \t 
 
\t \t // update data 
 
\t \t if ($valid) { 
 
\t \t \t $pdo = Database::connect(); 
 
\t \t \t $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 
\t \t \t $sql = "UPDATE admin set adminName ='$adminName', email ='$email', SKG ='$SKG', Extn ='$Extn' WHERE staffID = '$staffID'"; 
 
\t \t \t $q = $pdo->prepare($sql); 
 
\t \t \t $q->execute(array($staffID,$adminName,$email,$SKG,$Extn)); 
 
\t \t \t Database::disconnect(); 
 
\t \t \t header("Location: ManageAdministrator.php"); 
 
\t \t } 
 
\t } else { 
 
\t \t $pdo = Database::connect(); 
 
\t \t $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 
\t \t $sql = "SELECT * FROM admin where staffID = ?"; 
 
\t \t $q = $pdo->prepare($sql); 
 
\t \t $q->execute(array($staffID)); 
 
\t \t $data = $q->fetch(PDO::FETCH_ASSOC); 
 
\t \t $adminName = $data['adminName']; 
 
\t \t $email = $data['email']; 
 
\t \t $SKG = $data['SKG']; 
 
\t \t $Extn = $data['Extn']; 
 
\t \t $password = $data['password']; 
 
\t \t Database::disconnect(); 
 
\t } 
 
?> 
 

 
<!DOCTYPE html> 
 
<html lang="en"> 
 
\t <head> 
 
\t \t \t <title>Update Administrator</title> 
 
\t \t  <meta charset="utf-8"> 
 
\t \t  <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
 
\t \t  <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
\t \t  <meta name="description" content=""> 
 
\t \t  <meta name="author" content="Capability Management"> 
 
\t \t  <!-- CSS External Link --> 
 
\t \t  <link href="css/bootstrap.min.css" rel="stylesheet"> 
 
\t \t  <link href="css/sb-admin.css" rel="stylesheet"> 
 
\t \t  <link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> 
 
\t </head> 
 

 
\t <body> 
 
\t \t \t <script src="js/jquery.js"></script> 
 
    \t \t \t <script src="js/bootstrap.min.js"></script> 
 

 

 
     <div id="wrapper"> 
 
     \t <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
 
     \t <div class="navbar-header"> 
 
      \t \t <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> 
 
       \t \t <span class="sr-only">Toggle navigation</span> 
 
        <span class="icon-bar"></span> 
 
        <span class="icon-bar"></span> 
 
        <span class="icon-bar"></span> 
 
      \t \t </button> 
 
      \t \t <a class="navbar-brand" href="HomePage.php"><b> Training Log Database </b></a> 
 
     \t \t </div> 
 

 
     \t \t <ul class="nav navbar-right top-nav"> 
 
       \t <li class="dropdown"> 
 
        \t <!-- PHP REFER LOGIN NAME--> 
 
        \t \t <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> M Farhan M Fazli <b class="caret"></b></a> 
 
        \t \t \t <ul class="dropdown-menu"> 
 
         \t \t \t \t <li> 
 
          \t \t \t \t <a href="MyProfile.php"><i class="fa fa-fw fa-user"></i> Profile</a> 
 
         \t \t \t </li> 
 
         \t \t \t \t <li class="divider"></li> 
 
         \t \t \t \t <li> 
 
          <!-- PHP LOGOUT FUNCTION --> 
 
          <a href="LoginPage.html"><i class="fa fa-fw fa-power-off"></i> Log Out</a> 
 
         </li> 
 
        </ul> 
 
       </li> 
 
      </ul> 
 
      <!-- Sidebar Menu Items start here --> 
 
      <div class="collapse navbar-collapse navbar-ex1-collapse"> 
 
       <ul class="nav navbar-nav side-nav"> 
 
        <li> 
 
         <a href="HomePage.php"><i class="fa fa-fw fa-dashboard"></i> Home</a> 
 
        </li> 
 
        <li> 
 
         <a href="ManageAdministrator.php"><i class="fa fa-fw fa-bar-chart-o"></i> Manage Administrator</a> 
 
        </li> 
 
        <li> 
 
         <!-- Add new pages here --> 
 
         <a href="#"><i class="fa fa-fw fa-bar-chart-o"></i> Manage Staff</a> 
 
        </li> 
 
        <li> 
 
         <a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-edit"></i> Manage Training<i class="fa fa-fw fa-caret-down"></i></a> 
 
         <ul id="demo" class="collapse"> 
 
          <li> 
 
           <a href="TrainingList.php">Training Information</a> 
 
          </li> 
 
          <li> 
 
           <a href="#">TBA</a> 
 
          </li>        
 
         </ul> 
 
        </li> 
 
        <li> 
 
         <a href="javascript:;" data-toggle="collapse" data-target="#demo1"><i class="glyphicon glyphicon-wrench"></i> Tools for Administrator<i class="fa fa-fw fa-caret-down"></i></a> 
 
         <ul id="demo1" class="collapse"> 
 
          <li><a href="#"> Add News </a></li> 
 
          <li><a href="#"> Add Announcement </a></li> 
 
          <li><a href="#"> Search News</a> </li> 
 
          <li><a href="#"> Search Announcement </a></li> 
 
          <li><a href="#"> View My Post </a></li> 
 
         </ul> 
 
        </li> 
 
        <li> 
 
         <a href="#"><i class="glyphicon glyphicon-info-sign"></i> About</a> 
 
        </li> 
 
        <li> 
 
         <a href="#"><i class="glyphicon glyphicon-question-sign"></i> FAQs</a> 
 
        </li> 
 
       
 
       
 
      </div> 
 
      <!-- /.navbar-collapse --> 
 
     </nav> 
 
     <div id="page-wrapper"> 
 
     \t <div class="container-fluid"> 
 
     \t \t <div class="row col-lg-12"> 
 
     \t \t \t <h2 class="page-header"> Update Administrator Account </h2> 
 
     \t \t \t <div class="row col-lg-12"> 
 
     \t \t \t \t <h3> Administrator details </h3> 
 
     \t \t \t \t <div class="row col-lg-12"> 
 

 
\t \t \t \t \t \t <form class="form-horizontal form-group" action="adminUpdate.php?id=<?php echo $staffID?>" method="post"> 
 

 
    \t \t \t \t \t \t <!-- \t <div class="form-group col-lg-12 <?php echo !empty($staffIDError)?'error':'';?>"> 
 
\t \t \t \t \t  \t \t \t \t <label>Administrator Staff ID</label> 
 
\t \t \t \t \t  \t \t \t <input class="form-control" name="staffID" type="text" value="<?php echo !empty($staffID)?$staffID:'';?>"> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php if (!empty($staffIDError)): ?> 
 
\t \t \t \t \t  \t \t \t \t \t \t \t <span class="help-inline"><?php echo $staffIDError;?></span> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php endif; ?> 
 
\t \t \t \t \t \t \t \t </div>--> 
 

 
\t \t \t \t \t \t \t \t <div class="form-group col-lg-12 <?php echo !empty($adminNameError)?'error':'';?>"> 
 
\t \t \t \t \t  \t \t \t \t <label>Administrator Name</label> 
 
\t \t \t \t \t  \t \t \t <input class="form-control" name="adminName" type="text" value="<?php echo !empty($adminName)?$adminName:'';?>"> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php if (!empty($adminNameError)): ?> 
 
\t \t \t \t \t  \t \t \t \t \t \t \t <span class="help-inline"><?php echo $adminNameError;?></span> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php endif; ?> 
 
\t \t \t \t \t \t \t \t </div> 
 

 
\t \t \t \t \t \t \t \t <div class="form-group col-lg-12 <?php echo !empty($emailError)?'error':'';?>"> 
 
\t \t \t \t \t  \t \t \t \t <label>Administrator Email</label> 
 
\t \t \t \t \t  \t \t \t <input class="form-control" name="email" type="text" value="<?php echo !empty($email)?$email:'';?>"> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php if (!empty($emailError)): ?> 
 
\t \t \t \t \t  \t \t \t \t \t \t \t <span class="help-inline"><?php echo $emailError;?></span> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php endif; ?> 
 
\t \t \t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t \t \t <div class="form-group col-lg-12 <?php echo !empty($ExtnError)?'error':'';?>"> 
 
\t \t \t \t \t \t \t \t \t <label> Extension Number </label> 
 
\t \t \t \t \t \t \t \t \t \t <input class="form-control" name="Extn" type="text" value="<?php echo !empty($Extn)?$Extn:'';?>"> 
 
\t \t \t \t \t \t \t \t \t \t \t <?php if (!empty($ExtnError)): ?> 
 
\t \t \t \t \t \t \t \t \t \t \t \t <span class="help-inline"><?php echo $ExtnError;?></span> 
 
\t \t \t \t \t \t \t \t \t \t \t <?php endif; ?> 
 
\t \t \t \t \t \t \t \t \t </label> 
 
\t \t \t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t \t \t <div class="form-group col-lg-12 <?php echo !empty($SKGError)?'error':'';?>"> 
 
\t \t \t \t \t  \t \t \t \t <label>SKG</label> 
 
\t \t \t \t \t  \t \t \t \t \t <select class="form-control" name="SKG" value="<?php echo !empty($SKG)?$SKG:'';?>"> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 09 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 18 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 20 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 16 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 11 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 13 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 14 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 12 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 15 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 10 </option> 
 
\t \t \t \t \t  \t \t \t \t \t \t <option> SKG 25 </option> 
 
\t \t \t \t \t  \t \t \t \t \t </select> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php if (!empty($SKGError)): ?> 
 
\t \t \t \t \t  \t \t \t \t \t \t \t <span class="help-inline"><?php echo $SKGError;?></span> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php endif; ?> 
 
\t \t \t \t \t \t \t \t </div> 
 

 
\t \t \t \t \t \t \t <!-- \t <div class="form-group col-lg-12 <?php echo !empty($passwordError)?'error':'';?>"> 
 
\t \t \t \t \t  \t \t \t \t <label>Password</label> 
 
\t \t \t \t \t  \t \t \t \t \t <input type="password" name="password" id="password" class="form-control" placeholder="Password" value="<?php echo !empty($password)?$password:'';?>"> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php if (!empty($passwordError)): ?> 
 
\t \t \t \t \t  \t \t \t \t \t \t \t <span class="help-inline"><?php echo $passwordError;?></span> 
 
\t \t \t \t \t  \t \t \t \t \t \t <?php endif; ?> --> 
 
\t \t \t \t \t \t \t \t </div> 
 

 
\t \t \t \t \t \t \t \t <div class="form-actions col-lg-12"> 
 
\t \t \t \t \t \t \t \t \t \t <button type="submit" class="btn btn-success">Update</button> 
 
\t \t \t \t \t \t \t \t \t \t <a class="btn btn-default" href="ManageAdministrator.php">Back</a> 
 
\t \t \t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t \t \t 
 
\t \t \t \t \t </form> 
 

 
     \t \t \t \t </div> 
 
     \t \t \t </div> 
 
     \t \t </div> 
 
     \t </div> 
 
     </div> 
 
    </div><!--wrap--> \t 
 
\t </body> 
 
</html> 
 
\t \t \t

Вот connect.php

<?php 
 
class Database 
 
{ 
 
\t private static $dbName = 'tlad' ; 
 
\t private static $dbHost = 'localhost' ; 
 
\t private static $dbUsername = 'root'; 
 
\t private static $dbUserPassword = ''; 
 
\t 
 
\t private static $cont = null; 
 
\t 
 
\t public function __construct() { 
 
\t \t exit('Init function is not allowed'); 
 
\t } 
 
\t 
 
\t public static function connect() 
 
\t { 
 
\t // One connection through whole application 
 
     if (null == self::$cont) 
 
     {  
 
     try 
 
     { 
 
      self::$cont = new PDO("mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword); 
 
     } 
 
     catch(PDOException $e) 
 
     { 
 
      die($e->getMessage()); 
 
     } 
 
     } 
 
     return self::$cont; 
 
\t } 
 
\t 
 
\t public static function disconnect() 
 
\t { 
 
\t \t self::$cont = null; 
 
\t } 
 
} 
 
?>

Вот мой стол: enter image description here

Как я упоминал ранее, функция чтения, создания и удаления работает, за исключением этой функции обновления.

Обратите внимание: я следил за учебником по созданию CRUD-данных, в то время как его шаблон работал, но моего кода нет. Вот код обучающей программы для шаблона обновления:

<?php 
 
\t 
 
\t require 'database.php'; 
 

 
\t $id = null; 
 
\t if (!empty($_GET['id'])) { 
 
\t \t $id = $_REQUEST['id']; 
 
\t } 
 
\t 
 
\t if (null==$id) { 
 
\t \t header("Location: index.php"); 
 
\t } 
 
\t 
 
\t if (!empty($_POST)) { 
 
\t \t // keep track validation errors 
 
\t \t $nameError = null; 
 
\t \t $emailError = null; 
 
\t \t $mobileError = null; 
 
\t \t 
 
\t \t // keep track post values 
 
\t \t $name = $_POST['name']; 
 
\t \t $email = $_POST['email']; 
 
\t \t $mobile = $_POST['mobile']; 
 
\t \t 
 
\t \t // validate input 
 
\t \t $valid = true; 
 
\t \t if (empty($name)) { 
 
\t \t \t $nameError = 'Please enter Name'; 
 
\t \t \t $valid = false; 
 
\t \t } 
 
\t \t 
 
\t \t if (empty($email)) { 
 
\t \t \t $emailError = 'Please enter Email Address'; 
 
\t \t \t $valid = false; 
 
\t \t } else if (!filter_var($email,FILTER_VALIDATE_EMAIL)) { 
 
\t \t \t $emailError = 'Please enter a valid Email Address'; 
 
\t \t \t $valid = false; 
 
\t \t } 
 
\t \t 
 
\t \t if (empty($mobile)) { 
 
\t \t \t $mobileError = 'Please enter Mobile Number'; 
 
\t \t \t $valid = false; 
 
\t \t } 
 
\t \t 
 
\t \t // update data 
 
\t \t if ($valid) { 
 
\t \t \t $pdo = Database::connect(); 
 
\t \t \t $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 
\t \t \t $sql = "UPDATE customers set name = ?, email = ?, mobile =? WHERE id = ?"; 
 
\t \t \t $q = $pdo->prepare($sql); 
 
\t \t \t $q->execute(array($name,$email,$mobile,$id)); 
 
\t \t \t Database::disconnect(); 
 
\t \t \t header("Location: index.php"); 
 
\t \t } 
 
\t } else { 
 
\t \t $pdo = Database::connect(); 
 
\t \t $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 
\t \t $sql = "SELECT * FROM customers where id = ?"; 
 
\t \t $q = $pdo->prepare($sql); 
 
\t \t $q->execute(array($id)); 
 
\t \t $data = $q->fetch(PDO::FETCH_ASSOC); 
 
\t \t $name = $data['name']; 
 
\t \t $email = $data['email']; 
 
\t \t $mobile = $data['mobile']; 
 
\t \t Database::disconnect(); 
 
\t } 
 
?> 
 

 

 
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <link href="css/bootstrap.min.css" rel="stylesheet"> 
 
    <script src="js/bootstrap.min.js"></script> 
 
</head> 
 

 
<body> 
 
    <div class="container"> 
 
    
 
    \t \t \t <div class="span10 offset1"> 
 
    \t \t \t \t <div class="row"> 
 
\t \t  \t \t \t <h3>Update a Customer</h3> 
 
\t \t  \t \t </div> 
 
    \t \t 
 
\t  \t \t \t <form class="form-horizontal" action="update.php?id=<?php echo $id?>" method="post"> 
 
\t \t \t \t \t <div class="control-group <?php echo !empty($nameError)?'error':'';?>"> 
 
\t \t \t \t \t  <label class="control-label">Name</label> 
 
\t \t \t \t \t  <div class="controls"> 
 
\t \t \t \t \t  \t <input name="name" type="text" value="<?php echo !empty($name)?$name:'';?>"> 
 
\t \t \t \t \t  \t <?php if (!empty($nameError)): ?> 
 
\t \t \t \t \t  \t \t <span class="help-inline"><?php echo $nameError;?></span> 
 
\t \t \t \t \t  \t <?php endif; ?> 
 
\t \t \t \t \t  </div> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t \t <div class="control-group <?php echo !empty($emailError)?'error':'';?>"> 
 
\t \t \t \t \t  <label class="control-label">Email Address</label> 
 
\t \t \t \t \t  <div class="controls"> 
 
\t \t \t \t \t  \t <input name="email" type="text" value="<?php echo !empty($email)?$email:'';?>"> 
 
\t \t \t \t \t  \t <?php if (!empty($emailError)): ?> 
 
\t \t \t \t \t  \t \t <span class="help-inline"><?php echo $emailError;?></span> 
 
\t \t \t \t \t  \t <?php endif;?> 
 
\t \t \t \t \t  </div> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t \t <div class="control-group <?php echo !empty($mobileError)?'error':'';?>"> 
 
\t \t \t \t \t  <label class="control-label">Mobile Number</label> 
 
\t \t \t \t \t  <div class="controls"> 
 
\t \t \t \t \t  \t <input name="mobile" type="text" value="<?php echo !empty($mobile)?$mobile:'';?>"> 
 
\t \t \t \t \t  \t <?php if (!empty($mobileError)): ?> 
 
\t \t \t \t \t  \t \t <span class="help-inline"><?php echo $mobileError;?></span> 
 
\t \t \t \t \t  \t <?php endif;?> 
 
\t \t \t \t \t  </div> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t \t <div class="form-actions"> 
 
\t \t \t \t \t \t <button type="submit" class="btn btn-success">Update</button> 
 
\t \t \t \t \t \t <a class="btn" href="index.php">Back</a> 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t </form> 
 
\t \t \t \t </div> 
 
\t \t \t \t 
 
    </div> <!-- /container --> 
 
    </body> 
 
</html>

+5

Отправьте свой код здесь. Не как ссылка на репозиторий git. – Jens

+0

И как вы уверены, что не обнаружите ошибку? Вы проверяете ошибки? Что с тобой. – Darren

ответ

3

Ваш execute имеет 5 параметров, но запрос хочет 6.

$sql = "UPDATE admin set staffID = ?, adminName = ?, email = ?, SKG = ?, Extn = ? WHERE staffID = ?"; 
$q = $pdo->prepare($sql); 
$q->execute(array($staffID, $adminName, $email, $SKG, $Extn, $staffID)); 

Также отсутствовали $ перед email, SKG и Extn.

+0

Благодарим вас за ответ, сэр, можете ли вы дать более подробное объяснение по параметрам выполнения 5, а запрос хочет 6 частей? Я обновил код, добавив пароль в список. где прямо сейчас он даст возможность обновить все 6 столбцов. Я очень люблю, я пытаюсь научиться, кстати ... –

+0

Вы добавили 5 параметров, что заменило '?' В 'SET', но у него не было' $ staffID' для 6-го '?' в разделе 'WHERE'. –

+0

@PaanJoe Это сработало? Если да, примите мой ответ, чтобы отметить этот вопрос. –

Смежные вопросы