繁体   English   中英

PHP MySQL UPDATE 语句

[英]PHP MySQL UPDATE statement

我正在制作一个网站,在您登录并在数据库中添加所有联系人后,您还可以编辑它们。 要走的路是 MYSQL UPDATE 语句。 我已经编写了代码,但有些东西似乎不起作用,并且已经折磨了我几个小时。 这是代码

<?php
session_start();
    $del_id = $_GET["id"];
    $_SESSION["id"] = $del_id;
    $del_name = $_GET["name"];
    $del_phone = $_GET["phone"];
    $del_address = $_GET["address"];
    $del_email = $_GET["email"];
    $name2 = $_POST["name"];
    $address2 = $_POST["address"];
    $number2 = $_POST["number"];
    $email2 = $_POST["email"];
    $query = "UPDATE `contacts` SET email = '$email2' AND phone = '$number2' AND address = '$address2' AND name = '$name2' WHERE id = '$del_id'";
    $conn  = mysqli_connect($servername,$username,$password,$dbname);
    if(!$conn){
        die("Connection failed: ".mysqli_connect_error());
    }else{
        echo "Connected successfully";
    }  

    if(mysqli_query($conn,$query)){
        echo "Contact edited";    
    }
?>
<html><head></head>
    <body>
   <form action="edit.php" method = "POST">
      Add text only to the ones you want changed:<br><br>
        NAME<input type="text" value="<?php echo $del_name?>" name="name"><br>        
        ADDRESS<input type="text" value="<?php echo $del_address?>" name="address"><br>  
        PHONE NUMBER <input type="text" value="<?php echo $del_phone ?>" name="number"><br>  
        EMAIL <input type="text" value="<?php echo $del_email ?>" name="email"><br>  
      <input type="submit" value="Submit">
    </form>
    </body>
</html>

之后数据库中的联系人没有更新,可能是什么问题?

您的 UPDATE 语句是错误的:

"UPDATE `contacts` SET email = '$email2' AND phone = '$number2' AND address = '$address2' AND name = '$name2' WHERE id = '$del_id'"

试试这个

// Please sanitize the data
$email2 = filter_var( $email2, FILTER_SANITIZE_EMAIL );
$name2 = preg_replace( "#[^a-zA-Z ]#", '', $name2 );
$number2 = preg_replace( "#[^0-9 \-\+]#", '', $number2 );
$address = preg_replace( "[^\w \.\-\+]#", '', $address2 );

"UPDATE `contacts` SET email = '$email2', phone = '$number2', address = '$address2', name = '$name2' WHERE id = '$del_id' LIMIT 1"

笔记

我添加了限制子句LIMIT 1来限制将受更新语句影响的行数。 在这种情况下,我将其设置为1以确保我们正在更新单行。 我相信你也会想要的。

* 请考虑使用 mysqli 准备好的查询或 PDO

替换您的$query行。

$query = "UPDATE `contacts` 
          SET email = '$email2', phone = '$number2', address = '$address2', name = '$name2' 
          WHERE id = '$del_id'";

AND可以用在WHERE子句中。

$query = "UPDATE `users` SET `userpassword` = CONCAT(`userpassword`, 'a') WHERE `user_id` = 1";

阅读指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM