0

我正在为可能不存在的行更新表。如果它不存在,我需要进行插入。我最初计划知道我需要根据更新语句的负返回值进行插入,但它没有返回任何负值。

我怎么知道更新没有做任何事情?做另一个查询,看看是否有任何东西?或者也许之前的查询?

谢谢!

4

2 回答 2

5

使用http://php.net/manual/en/function.mysql-affected-rows.php

通过与 link_identifier 关联的最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询获取受影响的行数。

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

/* this should return the correct numbers of deleted records */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());

/* with a where clause that is never true, it should return 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n", mysql_affected_rows());
?>

如果您使用mysqli而不是mysql(很久mysql以前已弃用),它是.mysqli_affected_rows

于 2012-09-02T18:21:08.010 回答
0

简单mysql_affected_rows的方法是在表存在与否的情况下找出表中变化的方法。但是,为了优化代码,最好先检查表是否存在,例如:

$status = mysql_query("select * from table_name");
if($status==false){
   echo "table don't exists";
}
else{
  //do your stuff here
}
于 2012-09-02T18:33:22.490 回答