我创建了一个尝试使用条件更新值的函数。如果出现问题,它会尝试执行INSERT。
代码如下:
if(!$result=$this->query("UPDATE collect_data_settings SET setting_value ='".$setting_value."' WHERE collect_point = '".$collect_point."' AND setting_name='".$setting_name."';"))
$result=$this->query("INSERT INTO collect_data_settings ('collect_point','setting_name','setting_value') VALUES ('".$collect_point."','".$setting_name."','".$setting_value."');");
不幸的是,由于某种原因,即使条件不满足,UPDATE查询也不会返回false。有人能帮我吗?
答案 0 :(得分:0)
为什么不首先尝试搜索collect_point(假设这是一个唯一键)变量,如果它还没有在数据库中,则使用INSERT语句,如果不是,则使用UPDATE语句。例如:
$db = new SQLite3('database.db')
$check = $db->query("SELECT * FROM collect_data_settings WHERE collect_point = '$collect_point'")
$check_query = $check->numRows();
if($check_query > 0) {
*Your UPDATE query*
}else {
*Your INSERT query*
}
答案 1 :(得分:0)
UPDATE语句修改恰好与WHERE条件匹配的所有行。最终的数字并不重要;即使没有行匹配,也会成功检查所有行。
要了解更改了多少行,请使用changes() function:
$this->exec("UPDATE ... WHERE ...");
if ($this->changes() == 0)
$this->exec("INSERT ...");