[英]Insert data into MySQL database from inputs that are not empty with PHP
我有一個頁面,用戶可以在其中更新或更改其個人資料信息,例如他的位置或個人資料圖片。 默認情況下,每個用戶都在其個人資料頁面上獲取占位符數據或信息,並且mysql數據庫中的這些字段為空或不存在具有該用戶ID的行。 因此,首先我要檢查用戶以前是否將其個人資料信息輸入到數據庫中,以及是否存在數據,我將使用不為空的輸入字段對其進行更新,並且這部分工作正常。 但是,如果數據庫中不存在數據或具有該用戶ID的行不存在,那么我想插入數據,但又只能插入不為空的輸入 。
但這是我得到的錯誤
消息為“ SQLSTATE [42000]”的未捕獲的異常“ PDOException”:語法錯誤或訪問沖突:1064您的SQL語法有錯誤; ...
這是我的代碼( $userID
是會話$userID = $_SESSION['ID'];
)
if(isset($_POST['updateInfo'])) {
$userDesc = filter_var($_POST['description_update'], FILTER_SANITIZE_STRING);
$userLocation = filter_var($_POST['location_update'], FILTER_SANITIZE_STRING);
$userBirthDate = filter_var($_POST['birthDate_update'], FILTER_SANITIZE_STRING);
$user_picture_tmp = $_FILES['user_picture']['tmp_name'];
$user_picture_name = $_FILES['user_picture']['name'];
$checkInfo = $con->prepare("SELECT * FROM user_info WHERE userid=:userID");
$checkInfo->execute(array(':userID' => $userID));
$data = $checkInfo->fetch(PDO::FETCH_ASSOC);
$count_rows = $checkInfo->rowCount();
//Here i am checking if data exists in mysql and UPDATING it
if($count_rows > 0) {
if(!empty($userDesc)) {
$query = $con->prepare("UPDATE user_info SET description=:description WHERE userid=:userID");
$query->execute(array(':userID' => $userID, ':description'=> $userDesc));
}
if(!empty($userLocation)) {
$query = $con->prepare("UPDATE user_info SET location=:location WHERE userid=:userID");
$query->execute(array(':userID' => $userID, ':location'=> $userLocation));
}
if(!empty($userBirthDate)) {
$query = $con->prepare("UPDATE user_info SET birthDate=:birthDate WHERE userid=:userID");
$query->execute(array(':userID' => $userID, ':birthDate'=> $userBirthDate));
}
if(!empty($user_picture_name)) {
$query = $con->prepare("UPDATE user_info SET profile_pic=:profile_pic WHERE userid=:userID");
move_uploaded_file($user_picture_tmp, 'user_pic/'.$user_picture_name);
$query->execute(array(':userID' => $userID, ':profile_pic'=> $user_picture_name));
}
//But if data doesn't exists i want to INSERT IT and here is error
} else {
if($userDesc AND $userLocation AND $userBirthDate AND $user_picture_name != '') {
$query = $con->prepare("INSERT INTO user_info(userid) VALUES(:userID)");
$query->execute(array(':userID' => $userID));
if(!empty($userDesc)) {
$query = $con->prepare("INSERT INTO user_info(description) VALUES(?) WHERE userid=?");
$query->execute(array($userDesc, $userID));
}
if(!empty($userLocation)) {
$query = $con->prepare("INSERT INTO user_info(location) VALUES(?) WHERE userid=?");
$query->execute(array($userLocation, $userID));
}
if(!empty($userBirthDate)) {
$query = $con->prepare("INSERT INTO user_info(birthDate) VALUES(?) WHERE userid=?");
$query->execute(array($userBirthDate, $userID));
}
if(!empty($user_picture_name)) {
$query = $con->prepare("INSERT INTO user_info(profile_pic) VALUES(?) WHERE userid=?");
move_uploaded_file($user_picture_tmp, 'user_pic/'.$user_picture_name);
$query->execute(array($user_picture_name, $userID));
}
} else {echo 'All fields are empty';}
}
}
所以我的問題是,為什么我會收到此錯誤,我又以錯誤的方式進行此操作,還是有其他更好的方法來執行此操作? 這只是出於學習目的。
你在那里做很多插入! 您只能插入一個!
嘗試將您的else語句替換為以下內容:
else {
if($userDesc AND $userLocation AND $userBirthDate AND $user_picture_name != '') {
if($userDesc = ''){$userDesc = 'Placeholder description';}
if($userLocation = ''){$userLocation = 'Placeholder location';}
if($userBirthDate = ''){$userBirthDate = 'Placeholder birthdate';}
if($user_picture_name = ''){$user_picture_name = 'Placeholder picture_name';}
if ($stmt = $con->prepare("INSERT INTO user_info(description, location, birthDate, profile_pic ) VALUES(?,?,?,?)")) {
$stmt->bind_param("ssss", $userDesc, $userLocation,$userBirthDate, $user_picture_name );
$stmt->execute();
}
} else {echo 'All fields are empty';}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.