Oreo Oreo - 3 months ago 10
MySQL Question

Update Data into MySQL Table If Already Exists

I am using the following script to Insert data and upload image to server

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";
}


Now, I want to modify above script, which can allow me, to update data into mysql table and most importantly update image into uploads folder if rId already exists

I know that below query I can use to read data from mysql, to check whether record already exists or not for particular rId

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


And to update I could use something like this:

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


But curious to know that How can I use all these query together, to insert record, to check record, to update record and at last but not least to update image into uploads folder

NOTE: THIS IS NOT A DUPLICATE QUESTION; BECAUSE I JUST NOT NEED TO UPDATE THE DATA IN MYSQL TABLE, EVEN IMAGE IN UPLOADS FOLDER

Answer

Use INSERT ... ON DUPLICATE KEY UPDATE

Make 'r_id' column unique in room_info and Change your query

$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'";