2010-11-29 3 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

выглядят как неправильный запрос на мой вопрос lol .. 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... 

Немного лучший подход для нас e ассоциативный массив:

$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_desc или web_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

выполняет размытие и дает ошибку для неверных операторов SQL?

Мне нравится использовать

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

Это обычно помогает определить проблему.

Смежные вопросы