如何将数据更新到MySQL

时间:2010-11-29 09:38:06

标签: php mysql

我很难同时使用多个option_id @ option_name来更新数据。

当前数据库

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

有一种方法可以让这个更新查询更简单吗?

5 个答案:

答案 0 :(得分:3)

UPDATE个查询与正常查询完全相同WHERE条件。

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

更新option_content字段等于“我的网站”的所有行。

答案 1 :(得分: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...

稍微好一点的方法是使用关联数组:

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

答案 2 :(得分:0)

您的表似乎没有名为web_nameweb_urlweb_descweb_keyword的列。我建议你查看基本的SQL教程。这一次更加谨慎。

关于解决方案......啊,@ deceze刚刚发布了它。

答案 3 :(得分: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);

答案 4 :(得分:0)

模糊kill并为错误的SQL语句提供错误吗?

我喜欢用

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

通常有助于查明问题。