使用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

回到顶部