如果MySQL表中已存在数据,则更新数据

32 浏览
0 Comments

如果MySQL表中已存在数据,则更新数据

这个问题已经有了答案:

在MySQL表中插入或更新数据

我正在使用以下脚本插入数据并上传图像到服务器

if($_SERVER['REQUEST_METHOD']=='POST') {
    $image = $_POST['image'];
    $name = $_POST['name'];
    $rId = $_POST['rId'];
    $path = "uploads/$rId.png";
    $sql = "insert into room_info (r_id,url,name) VALUES ('$rId','$path','$name')";
    if(mysqli_query($con,$sql)){
        file_put_contents($path, base64_decode($image));
        echo "Successfully Uploaded";
    }
    mysqli_close($con);
    } else {
    echo "Error";
}

现在,我想修改上面的脚本,使其可以允许我更新mysql表中的数据,最重要的是,如果rId已经存在,则更新上传文件夹中的图像

我知道可以使用以下查询来从mysql中读取数据,以检查特定rId的记录是否已存在

$strSQL = "SELECT * FROM room_info WHERE r_id = '$rId' ";

要进行更新,我可以使用类似以下代码:

update room_info set name = $name where r_id = $rId;

但是,我很好奇,如何将所有这些查询一起使用,以插入记录,检查记录,更新记录,并最后但并非最不重要的是更新上传文件夹中的图像

注意:这不是重复的问题。因为我不仅需要在mysql表中更新数据,还需要在上传文件夹中更新图像。

admin 更改状态以发布 2023年5月24日
0
0 Comments

使用 INSERT ... ON DUPLICATE KEY UPDATE

在 room_info 表中创建唯一的 'r_id' 列,并更改您的查询

$sql = "insert into room_info (r_id,url,name) VALUES ('$rId','$path','$name')";
to 
$sql = "insert into room_info (r_id,url,name) VALUES ('$rId','$path','$name')
ON DUPLICATE KEY UPDATE url='$path'";

0