我正在研究一個需要profil的項目,其中的人員可以修改其信息。從PHP構建SQL更新語句的最佳方法
它的工作,但我想知道:什麼是最好的方式來改變一個MySQL數據庫中的行?我應該按價值修改價值還是更新一切?
例子: 這裏我得到了當前的名字和姓是,當它從什麼是目前在我的數據庫
例1不同,我只更新 - 由值值
我如果有更改,則對每個數據進行兩次查詢。
if((!empty($name)) && ($nom != $name_user)){
$sql = "UPDATE user SET name_user='$name' WHERE id_user='$id'";
mysqli_query($conn, $sql);
echo '<h2 class="center">Your name has been modified</h2>';
}
if((!empty($firstname)) && ($firstname!= $firstname_user)){
$sql = "UPDATE user SET name_user='$name' WHERE id_user='$id'";
mysqli_query($conn, $sql);
echo '<h2 class="center">Your firstname has been modified</h2>';
}
爲例2 - 在一個查詢
它確實相同,但只使用一個查詢一切。
if(((!empty($firstname)) && ($firstname!= $firstname_user)) || ((!empty($firstname)) && ($firstname!= $firstname_user))){
$sql = "UPDATE user SET name_user='$name', firstname_user='$firstname' WHERE id_user='$id'";
mysqli_query($conn, $sql);
echo '<h2 class="center">Your profil has been modified</h2>';
}
只是在實際更改時更新值才更好嗎? (示例1)
即使只更改了一個值,更改兩個值會更好嗎? (示例2)
什麼可能是最好的表現?謝謝 !
只更新已更改的值,並在一個查詢中完成所有操作。另外,使用[** prepared statements **](https://secure.php.net/manual/en/mysqli.prepare.php)避免[** SQL注入**](https://en.wikipedia .org/wiki/SQL_injection)攻擊。 –
@AlexHowansky我瞭解準備好的陳述,這只是一個快速閱讀。你如何只使用一個查詢,你使用[switch](http://php.net/manual/fr/control-structures.switch.php)?在我的專業領域,我只有兩個領域,但未來我可能需要更多,你推薦我做什麼?謝謝btw! – Gingerboy
有什麼區別,快速閱讀還是不快?爲什麼你不用任何閱讀準備好的語句,你應該? –