【问题标题】:PHP SQL won't update the dataPHP SQL 不会更新数据
【发布时间】:2015-06-18 07:14:41
【问题描述】:

2015 年 6 月 23 日更新

更新查询仍然不起作用。听取了 Rene Kross 的建议并进行了一些代码清理,偶然发现了一些缺少分号等的部分,但是更新查询仍然无法正常工作。

这里是 adminUpdate.php

<?php 
	
	require 'Connect.php';

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

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

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

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

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


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

        		<ul class="nav navbar-right top-nav">
                	<li class="dropdown">
                    	<!-- PHP REFER LOGIN NAME-->
                    		<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> M Farhan M Fazli <b class="caret"></b></a>
                    			<ul class="dropdown-menu">
                       				 <li>
                           				 <a href="MyProfile.php"><i class="fa fa-fw fa-user"></i> Profile</a>
                        			</li>
                       				<li class="divider"></li>
                      				<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">
        	<div class="container-fluid">
        		<div class="row col-lg-12">
        			<h2 class="page-header"> Update Administrator Account </h2>
        			<div class="row col-lg-12">
        				<h3> Administrator details </h3>
        				<div class="row col-lg-12">

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

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

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

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

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

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

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

这是 Connect.php

<?php
class Database 
{
	private static $dbName = 'tlad' ; 
	private static $dbHost = 'localhost' ;
	private static $dbUsername = 'root';
	private static $dbUserPassword = '';
	
	private static $cont  = null;
	
	public function __construct() {
		exit('Init function is not allowed');
	}
	
	public static function connect()
	{
	   // 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;
	}
	
	public static function disconnect()
	{
		self::$cont = null;
	}
}
?>

这是我的桌子:

正如我之前提到的,读取、创建和删除功能都可以正常工作,但更新功能不可用。

请注意:我遵循了有关创建 CRUD 数据表的教程,虽然他的模板有效,但我的代码却没有。这是更新模板的教程代码:

<?php 
	
	require 'database.php';

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


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

【问题讨论】:

  • 在此处发布您的代码。不是指向 git 存储库的链接。
  • 你怎么确定它没有显示错误?你在检查错误吗?怎么了。

标签: php html sql-update


【解决方案1】:

您的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));

emailSKGExtn 前面也缺少$

【讨论】:

  • 谢谢您的回复先生,您能否对execute 5参数和query want 6部分进行更详细的解释?我已经通过将密码也添加到列表中来更新代码。现在它将提供一个控件来更新所有 6 列。非常抱歉,顺便学习一下……
  • 您添加了 5 个参数,用于替换 SET 部分中的 ?,但在 WHERE 子句中的第 6 个 ? 没有 $staffID
  • Kross :不,它没有,但是 Rene,我已经更新了我的帖子,所以你可以查看详细的问题。截至发帖时,更新模板的代码正在工作,但我的代码没有,但是当我用我的自定义表替换它时,它没有工作。
猜你喜欢
  • 1970-01-01
  • 2014-01-26
  • 2016-04-21
  • 2016-04-16
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多