繁体   English   中英

使用SQLite3和PHP获取“更新”错误

[英]Get 'Update' error using SQLite3 and PHP

我创建了一个尝试使用条件更新值的函数。 如果出现问题,它将尝试执行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。 有人能帮我吗?

为什么不先尝试搜索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*
}

UPDATE语句修改所有符合WHERE条件的行。 最终号码没有关系; 即使没有行匹配,也会成功检查所有行。

要查找更改了多少行,请使用changes()函数

$this->exec("UPDATE ... WHERE ...");
if ($this->changes() == 0)
    $this->exec("INSERT ...");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM