使用MySQL和PHP更新或插入行
在许多情况下,您需要在表中插入或更新某些数据,但是不确定要执行哪个功能。常见的解决方案是先对表进行查询,以查看数据是否存在,如果不存在,则插入数据,如果存在则进行更新。但是,这会造成不必要的开销,因为每次运行代码时,至少要运行2个查询。
更好的方法是尝试更新表,然后使用该mysql_info()函数检测查询中要更新的行数以及与更新查询中的参数匹配的行数。
进行以下查询。
UPDATE TABLE SET VALUE = "value" WHERE valueId = 2;
在表上运行时,该mysql_info()函数返回以下结果。
Rows matched: 0 Changed: 0 Warnings: 0
这说明表中不存在valueID 2。因此,我们需要运行一个插入查询。
以下代码段将使您可以在表上运行更新查询,检测该值是否存在,然后插入数据。
$sql = 'UPDATE table SET value = "value" WHERE valueId = 2';mysql_query($sql);
// 更新有效吗?
preg_match('/Rows matched: ([0-9])/',mysql_info(),$match);
if ($match[1] == 0) {
// 插入数据库
$sql = 'INSERT INTO table(valueID, value) VALUE(2, "value")';
mysql_query($sql);
}
}
最后,您可能会争辩说,使用该mysql_affected_rows()功能可能是更好的解决方案。但是,这只会告诉您受影响的行数,因此,如果更新查询找到正确的行但不更改信息,则它将显示值为0。
以上是 使用MySQL和PHP更新或插入行 的全部内容, 来源链接: utcz.com/z/311508.html