2010-11-29 30 views
3

我越來越模糊更新數據option_id @option_name在同一時間。我如何更新數據到MySQL

當前分貝

option_id option_name  option_content   option_status 
1   web_url   http://localhost.com  1 
2   web_name   My Website    1 
3   web_description Welcome to my website 1 
4   web_keywords  movies, power, ranger 1 

PHP更新數據

$web_name = $_POST['web_name']; 
$web_url  = $_POST['web_url']; 
$web_desc = $_POST['web_desc']; 
$web_keyword = $_POST['web_keyword']; 

更新從DR anwser

$query = "UPDATE web_options SET option_content= 
     '{$db->string_escape($web_name, true)}' 
     WHERE option_name = 'web_name'"; 
$db->rq($query); 

$query = "UPDATE web_options SET option_content= 
    '{$db->string_escape($web_url, true)}' 
     WHERE option_name = 'web_url'"; 
$db->rq($query); 

$query = "UPDATE web_options SET option_content= 
    '{$db->string_escape($web_desc, true)}' 
     WHERE option_name = 'web_desc'"; 
$db->rq($query); 

$query = "UPDATE web_options SET option_content= 
    '{$db->string_escape($web_keyword, true)}' 
     WHERE option_name = 'web_keyword'"; 
$db->rq($query); 

有有辦法讓這個更新查詢更簡單嗎?

+1

又是什麼問題? – 2010-11-29 09:40:06

+0

你能否澄清一下你想用什麼來更新? – deceze 2010-11-29 09:59:44

+0

看起來像對我的問題大聲笑錯誤的查詢.. DR是給了一個線索。但我想短暫查詢。 – Blur 2010-11-29 10:08:48

回答

3

你有使用多個查詢:

$query = "UPDATE web_options SET option_content= 
      '{$db->string_escape($web_name, true)}' 
      WHERE option_name = 'web_name'"; 
$db->rq($query); 

$query = "UPDATE web_options SET option_content= 
     '{$db->string_escape($web_url, true)}' 
      WHERE option_name = 'web_url'"; 
$db->rq($query); 

// And so on... 

稍微好一點的方法我s使用關聯數組:

$data['web_name'] = $_POST['web_name']; 
$data['web_url'] = $_POST['web_url']; 
//and so on... 
//Resist the temptation to use $_POST directly! 

foreach ($data as $name => $value) { 
    $query = "UPDATE web_options SET option_content= 
      '{$db->string_escape($value, true)}' 
       WHERE option_name = '$name'"; 
    $db->rq($query); 
} 
3

UPDATE查詢採用與普通查詢完全相同的WHERE條件。

UPDATE `web_options` SET ... WHERE `option_content` = 'My Website'; 

更新option_content字段等於「我的網站」的所有行。

0

您的表似乎沒有列名爲web_name,web_url,web_descweb_keyword的列。我建議你查看你的基本SQL教程。這次更仔細得多。

至於解決方案......啊,@deceze剛發佈它。

0

才能使用更新,你應該知道什麼是option_id你想要的目標

的option_id必須是主鍵

,你的代碼會是這樣

$web_name = $_POST['shop_name']; 
$web_url  = $_POST['shop_url']; 
$web_desc = $_POST['shop_desc']; 
$web_keyword = $_POST['shop_keyword']; 
$option_id = $_POST['option_id']; 

$query = 'UPDATE web_options SET 
     web_name="' . $db->string_escape($web_name, true) . '", 
     web_url="' . $db->string_escape($web_url, true) . '", 
     web_desc="' . $db->string_escape($web_desc, true) . '", 
     web_keyword="' . $db->string_escape($web_keyword, true) . '" 
     WHERE option_content ="' $bd->string_escape($option_id , true) . '" '; 
$db->rq($query); 
0

是否會模糊kill併爲錯誤的SQL語句提供錯誤?

我喜歡用

or die("Cannot Update: ".mysql_error()); 

它通常有助於確定問題。