6

如何在mysql中的更新语句后获取受影响的行(不仅仅是受影响的行数)。

4

4 回答 4

3

mysql_info — 获取有关最近查询的信息

$recent = mysql_info();

有用的实现示例

于 2012-05-15T07:23:50.473 回答
1

如果您想要实际行而不是受影响行的数量,只需在更新之前获取它们。

之后,您可以将更新值与选定值进行比较,并按差异过滤它们。

CodeIgniter 示例:

$arr_where = array('date >=' => date('Y-m-d H:i:s'));

$query = $this->db->get_where('table', $arr_where);

$arr_update = array('status' => 'TRUE');

if ($this->db->update('table', $arr_update, $arr_where)) {

    foreach($query->result() as $row)
        foreach(array_keys($arr_update) as $h)
            if ($row->$h != $arr_update[$h])
                echo "This row ({$row->id}) had it's {$h} changed!<br />";

}

很抱歉在 CodeIgniter 中提供解决方案,但我发现它是最简单的示例。

要查看$this->db函数的作用,请参阅Active Records

于 2012-05-15T07:25:43.467 回答
1

您可以尝试使用:

SET @uids := '';
UPDATE <table>
 SET <column1> = <value>
 WHERE <column2> = <value> 
   AND ( SELECT @uids := CONCAT_WS(',', @uids, id) );
SELECT TRIM(LEADING ',' FROM @uids);
于 2014-11-13T17:19:08.563 回答
-1

由于您使用的是 php,因此您可以使用mysql_affected_rows()来获取受影响的行数。

于 2012-05-15T07:20:08.760 回答