Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新表中的特定行_Php_Mysql_Mysqli - Fatal编程技术网

Php 更新表中的特定行

Php 更新表中的特定行,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个正在用户屏幕上显示的表格。当用户单击edit时,我希望他能够单击该特定行的参数并更新单个参数(例如名称);然后,其他参数(如电子邮件、密码和地址)应保持不变 name email password address action user user@gmail.com user u.address edit 用于编辑链接的代码为: echo"<td class='center'><a class='btn

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

name    email           password    address     action
user    user@gmail.com  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\u update\u 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)
//demo@gmail.com (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);
    ?> 

我觉得您在查询中保留了关键字,尝试将您的查询更改为,这样您就混合了mysql和mysqli

删除此行
echo mysql\u errno($con)。": " . mysql\u错误($con)。“\n”

如果它不工作,那么打印您的查询并尝试在phpmyadmin或mysql中手动运行它

  • 在两页的顶部
    session_start()添加这一行
  • 而不是在
    admin\u edit\u user
    上添加这一行
    $\u SESSION['id']=$\u GET['id']
  • admin\u update\u user.php上添加此行
    $id=$\u会话['id']
  • 在同一个文件中,这个文件
    admin\u update\u user.php
    您有这一行
    $id=$\u 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.“

请尝试使用以下方法代替此方法:

$sql = "UPDATE user SET name = '$name', email = '$email', password = '$password', address = '$address' WHERE id = $id";
它更干净,可以解决很多查询问题

编辑:

问题可能是您的一个变量具有

当你把它放进去,它会变成这样:

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

它检测到一个额外的倒逗号,因此返回一个错误。

您遇到了什么错误?您遇到了什么错误getting@sgtmysql_errno()希望参数1为resource@NaincyGuptamysql_errno()预期参数1为Resource我收到一个语法错误,但我无法理解出错的原因这里是完整的错误消息错误:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,在第1行的“”附近使用正确的语法。这是正确的,并且不认为它会创建任何issue@RamSharma它现在没有显示任何错误,但它没有更新值Sokay sam,尝试回显所有变量($name,$email等)然后查看是否有任何字段有问题。我认为问题在于Address,最有可能的是其中一个变量中有一个倒逗号。尝试将其转义或完全删除。我尝试了您的解决方案,但仍然没有给出所需的结果有输出0:UPDATE user SET name='',email='',password='',Address='',WHERE id=''啊,我明白了。试试这个。对于您的PHP代码,删除所有检查变量是否为空的语句。其次,不要使用“if(empty($password))”,而是使用“if($password='')”。empty()用于检查是否声明了变量,但不用于检查“”或null。如果我删除else语句,它不会干扰我的代码,因为else部分正在为参数分配新值。如果参数是由用户输入的,我希望分配这些参数,否则它们应该保留旧值
$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;
$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";
$sam = "Sam'";
$sql = "  UPDATE user SET name = 'sam''  ";