2010-11-29 8 views
3

Ich bekomme Unschärfe, um Daten mit mehreren option_id @option_name in der gleichen Zeit zu aktualisieren.Wie aktualisiere ich Daten zu MySQL

Aktuelle db

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 Aktualisierungsdaten

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

aktualisieren Von 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); 

Es haben eine Möglichkeit dieses Update zu machen einfacher abfragt?

+1

Was war die Frage noch einmal? –

+0

Können Sie klären, was Sie mit was aktualisieren möchten? – deceze

+0

aussehen wie falsche Abfrage auf meine Frage lol .. DR war ein Hinweis geben. aber ich möchte kurz nachfragen. – Blur

Antwort

3

Sie haben sein wollen Ziel um mehrere Abfragen zu verwenden:

$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... 

Ein etwas besser Ansatz i s ein assoziatives Array zu verwenden:

$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); 
} 
+0

Sieht aus wie ich es wiederholen muss 20 mal, wenn 20 Eingänge haben. Irgendeine kurze Frage? – Blur

+0

Was Sie haben, ist im Wesentlichen eine Liste von Name-Wert-Paaren. Sie könnten sie in ein Array einfügen und dann das Array durchlaufen, um die Datenbank zu aktualisieren. So wird zumindest der Datenbankteil Ihres Codes abgespeckt. –

3

UPDATE Abfragen nehmen genau die gleichen WHERE Bedingungen wie normale Abfragen.

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

aktualisiert alle Zeilen, in denen die option_content Feld "Meine Website" entspricht.

+2

Jede Zeile in dieser Antwort beginnt mit dem Wort "update". Bekomme ich ein Anti-Poesie-Abzeichen oder etwas? – deceze

+0

Wenn nur! Ich denke, wir sollten Joel um eins bitten. –

+0

haha, ja du solltest: P – tawfekov

0

Ihr Tisch scheint nicht Spalten mit dem Namen web_name, web_url, web_desc oder web_keyword. Ich schlage vor, dass Sie Ihr grundlegendes SQL-Tutorial überprüfen. Dieses Mal viel vorsichtiger.

Wie für die Lösung ... Ah, @deceze hat es gerade gepostet.

0

um Update zu verwenden, sollten Sie wissen, was option_id wird Sie

die option_id müssen Primärschlüssel

und Ihr Code wie dieser

$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

nicht verschwimmen zu töten und geben Fehler für schlechte SQL-Anweisungen?

mag ich

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

verwenden Es hilft normalerweise das Problem zu lokalisieren.

Verwandte Themen