php
  • mysql
  • mysqli
  • 2014-10-29 45 views 0 likes 
    0

    我有一个表格显示在用户屏幕上。当用户点击编辑时,我希望他能够点击该特定行的参数并更新单个参数(例如,名称)。那么其他参数(例如,电子邮件,密码和地址)应该保持不变。更新表中的特定行

    name email   password address  action 
    user [email protected] user  u.address edit 
    

    用于编辑链接的代码是:

    echo"<td class='center'><a class='btn btn-info' href=\"admin_edit_user.php?id=".$row['id']."\"><i class='glyphicon glyphicon-edit icon-white'></i>Edit</a></td>"; 
    

    守则admin_edit_user.php页:

    <form class="form-horizontal" role="form" action="admin_update_user.php" enctype="multipart/form-data" method="post"> 
        <div class="form-group"> 
         <label class="col-lg-3 control-label">Name</label> 
          <div class="col-lg-8"> 
           <input class="form-control" name="name" value="" type="text"> 
          </div> 
        </div> 
    
        <div class="form-group"> 
         <label class="col-lg-3 control-label">Email</label> 
          <div class="col-lg-8"> 
           <input class="form-control" name="email" value="" type="text"> 
          </div> 
        </div> 
    
        <div class="form-group"> 
         <label class="col-lg-3 control-label">Password</label> 
          <div class="col-lg-8"> 
           <input class="form-control" name="password" value="" type="text"> 
          </div> 
        </div> 
    
        <div class="form-group"> 
         <label class="col-lg-3 control-label">Address</label> 
          <div class="col-lg-8"> 
           <input class="form-control" name="address" value="" type="text"> 
          </div> 
        </div> 
    
        <div class="form-group"> 
         <label class="col-md-3 control-label"></label> 
          <div class="submit"> 
           <input class="btn btn-primary" value="Save Changes" type="submit" name="submit"> 
          </div> 
        </div>       
    </form> 
    

    这种形式的用户被重定向到admin_update_user.php

    <?php 
        $con=mysqli_connect("localhost","root","","db"); 
        if (mysqli_connect_errno()) 
         { 
          echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
         } 
        $id = $_GET['id']; 
    
    
        $query="SELECT * FROM user"; 
        $result= mysqli_query($con, $query) or die(mysqli_error()); 
        while ($row= mysqli_fetch_array($result)) 
         { 
          $name_data=$row['name']; 
          $name_email=$row['email']; 
          $name_password=$row['password']; 
          $name_address=$row['address']; 
         } 
    
        if(isset($_POST['submit'])) 
         { 
          $name=$_POST['name']; 
          $email=$_POST['email']; 
          $password=$_POST['password']; 
          $address=$_POST['address']; 
    
          if(empty($name)) 
           { 
            //if the value is empty its going to set it equal to the database value 
            $name=$name_data; 
           } 
          else 
           $name=$name; 
    
          if(empty($email)) 
           { 
            $email=$name_email; 
           } 
          else 
           $email=$email; 
    
          if(empty($password)) 
           { 
    
            $password=$name_password; 
           } 
          else 
           $password=$password; 
    
          if(empty($address)) 
           { 
            $address=$name_address; 
           } 
          else 
           $address=$address; 
    
         } 
    //0: demo.name (value given for name) 
    //[email protected] (value given for email) 
    //demo (value given forpassword) 
    //demo 
    //demo.address (value given for address) 
    
         $sql = "UPDATE user SET name='".$name."',email='".$email."',password='".$password."',address='".$address."' WHERE id ='".$id."'"; 
    
         echo mysqli_errno($con) . ": " . mysqli_error($con) . "\n"; 
    
    
         if (!mysqli_query($con,$sql)) 
          { 
           die('Error: ' . mysqli_error($con)); 
          } 
         header("Location: admin_user_list.php"); 
         exit; 
         mysqli_close($con); 
        ?> 
    

    我在更新查询中收到错误。如果有人能帮忙,我会非常感激。

    P.S @ FortMauris这里是你希望看到的编辑部分。

    $id = $_GET['id']; 
        $name = mysqli_real_escape_string($con, $_POST['name']); 
        $email = mysqli_real_escape_string($con, $_POST['email']); 
        $password = mysqli_real_escape_string($con, $_POST['password']); 
        $address = mysqli_real_escape_string($con, $_POST['address']); 
    
        $query="SELECT * FROM user"; 
        $result= mysqli_query($con, $query) or die(mysqli_error()); 
        //get the value from database 
        while ($row= mysqli_fetch_array($result)) 
        { 
         $name_data=$row['name']; 
         $name_email=$row['email']; 
         $name_password=$row['password']; 
         $name_address=$row['address']; 
    
        } 
    
    if(isset($_POST['submit'])) 
    { 
        $name=$_POST['name']; 
        $email=$_POST['email']; 
        $password=$_POST['password']; 
        $address=$_POST['address']; 
    
        if(empty($name)) 
        { 
         //if the value is empty its going to set it equal to the database value 
         $name=$name_data; 
        } 
    
    
        if(empty($email)) 
        { 
         $email=$name_email; 
        } 
    
         if ($password == '') 
        { 
    
         $password=$name_password; 
        } 
    
        if(empty($address)) 
        { 
         $address=$name_address; 
        } 
    
    } 
    
    echo mysqli_errno($con) . ": " . mysqli_error($con) . "\n"; 
    
    $sql = "UPDATE user SET name='".$name."',email='".$email."',password='".$password."',address='".$address."' WHERE id ='".$id."'"; 
    
    
        if (!mysqli_query($con,$sql)) 
        { 
         die('Error: ' . mysqli_error($con)); 
        } 
    mysqli_close($con); 
    //header("Location: admin_user_list.php"); 
    exit; 
        mysqli_close($con); 
    
    +0

    你会得到什么错误? – 2014-10-29 07:10:12

    +0

    你得到什么错误 – Naincy 2014-10-29 07:10:47

    +0

    @sgt mysql_errno()期望参数1是资源 – sam 2014-10-29 07:15:11

    回答

    1
    • 在两个页面顶部session_start();
    • 不是添加在admin_edit_user此行添加此行$_SESSION['id']=$_GET['id'];
    • 比对admin_update_user.php加入这行$id=$_SESSION['id'];
    • 比在同一个文件这个文件admin_update_user.php你有这条线$id=$_GET['id'];去掉它。

      $sql = "UPDATE user SET name='".$name."',email='".mysqli_real_escape_string($con,$email)."',password='".$password."',address='".mysqli_real_escape_string($con,$address)."' WHERE id ='".$id."'";

    0

    我觉得你已经在查询中保留关键字尝试改变你的查询,你是混合mysql和mysqli。

    删除此行echo mysql_errno($con) . ": " . mysql_error($con) . "\n";

    $sql = "UPDATE `user` SET `name`='".$name."',`email`='".$email."',`password`='".$password."',`address`='".$address."' WHERE `id` =".$id; 
    
    if (!mysqli_query($con,$sql)) 
        { 
         die('Error: ' . mysqli_error($con)); 
        } 
    mysqli_close($con); 
    header("Location: admin_user_list.php"); 
    exit; 
    

    如果不到风度工作,然后打印您的查询,并尝试在phpMyAdmin或MySQL手动运行;

    +0

    我得到一个语法错误,但我不能明白出了什么问题 – sam 2014-10-29 07:18:50

    +0

    我刚才更新我的答案,你可以尝试更新的代码? – 2014-10-29 07:22:32

    +0

    我仍然收到相同的错误 – sam 2014-10-29 07:26:05

    0
    $sql = "UPDATE user SET name='".$name."',email='".$email."',password='".$password."',address='".$address."' WHERE id ='".$id."'"; 
    

    取而代之的是,请尝试使用此:

    $sql = "UPDATE user SET name = '$name', email = '$email', password = '$password', address = '$address' WHERE id = $id"; 
    

    它是更清洁,会解决很多问题的查询。

    编辑:

    的问题可能具有'"您的变量1。

    当你把它,它便会成为像这样:

    $sam = "Sam'"; 
    $sql = " UPDATE user SET name = 'sam'' "; 
    

    它检测额外的支持引号,因此返回一个错误。

    +0

    它显示相同的语法错误 – sam 2014-10-29 08:35:03

    +0

    好吧山姆,尝试回显所有变量($名称,$电子邮件等),看看是否有问题的任何领域。我认为问题在于Address,很可能在这些变量中有一个引号。尝试逃避它或完全删除它。 – FortMauris 2014-10-29 08:39:57

    +0

    我试过你的解决方案,但它仍然没有给出预期的结果 – sam 2014-10-29 09:12:08

    相关问题