2013-02-03 74 views
1

我是新來的,我不確定這是一個PHP問題還是SQL,但我有一個沒有必填字段的表單,當提交更新時數據庫行中的列。目前,如果在輸入空白時提交表單,則會使用空格更新相應的列,並刪除曾經存在的值。我試圖弄清楚的是如何在表單提交時使它如此,如果輸入值爲空,它不會更新數據庫列。SQL更新行::如果輸入空的話留下當前值

if (isset($_POST['submit'])) { 
    $user = $_SESSION['user_name']; 
    $signature = $mysqli->real_escape_string($_POST['signature']); 
    $skype = $mysqli->real_escape_string($_POST['skype']); 
    $facebook = $mysqli->real_escape_string($_POST['facebook']); 

    $insert = $mysqli->query(" 
    UPDATE users 
    SET u_signature='$signature', u_skype='$skype', u_facebook='$facebook' 
    WHERE u_name='$user' 
    ") or die ($mysqli->error); 
+0

[**請不要在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – thaJeztah

+0

哇,我得到了很多更新來做...謝謝你的擡頭。 – Hezerac

+0

aaaaaand固定。 – Hezerac

回答

2
​​
+0

請編輯它供您使用,這只是一個教育目的的模式。 – 2013-02-03 21:27:26

+0

這就是它!謝謝! – Hezerac

+0

這是他們稱之爲「準備好的陳述」嗎? – Luka

0

默認情況下,您可以在輸入中包含舊數據,因此如果沒有數據更改,則只是再次插入舊數據。否則:

$q_vars = "UPDATE users SET "; 
if(!empty($signature)) 
{ 
$q_vars .= "signature = $signature "; 
} 

但用數組+ foreach添加逗號,如果它不是最後一個。