我想获得最后一个受影响的表名(插入后)。
我试过了,mysql_insert_id()
但我只有id
. 我也想要表名。
谁能给我关于我的问题的想法
这是一个伸展...但如果:
你可以试试:
$row = mysql_fetch_assoc(mysql_query("explain $query"));
$table = $row['table'];
从 mysql 5.6.3+ 开始,您可以结合explain
查询insert into
。我认为这应该只返回 1 行。我自己没有 mysql 5.6.3+ 来测试它。
您在评论中提到您正在使用一个通用函数来应用更改,从而阻止您“知道”您插入的最后一个表是什么。
如果是这样的话:你的逻辑是有缺陷的。
MySQL 不会告诉你最后一个表是在哪个表中插入的。你必须在你的函数中编写一个钩子,你最后知道你要更新哪个表。无论您使用什么函数,都必须在执行插入之前指定一个表名。您此时存储表名。
您可以通过多种方式做到这一点,具体取决于您的需要:
information_schema
如果你有一个数据库,你可以使用:
SELECT TABLE_SCHEMA, TABLE_NAME, UPDATE_TIME
FROM TABLES
ORDER BY UPDATE_TIME DESC
LIMIT 0,1
在查询后使用它,您将获得受影响的表。
您可以覆盖本文mysql_query
中定义的函数,将上次调用表名称保存在全局变量或会话中,并为最后调用的插入完成祈祷。
// THIS JUST SAMPLE... use code from link below ^
function custom_mysql_query($query){
if(strstr('INSERT',$query)){
/*GET YOUR TABLE NAME WITH REGEX*/
}
basic_mysql_query($query);
}
这对我来说是非常非常非常糟糕的解决方案。但理论上会起作用。