我很难同时使用多个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);
有一种方法可以让这个更新查询更简单吗?
答案 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_name
,web_url
,web_desc
或web_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());
通常有助于查明问题。