有没有办法访问自动增量的id以便在查询中使用。
例如Wordpress将插入的id放在同一行的GUID中,是否有任何方法可以访问该行在插入过程中将使用的id。
或许我可以通过一些快速的方式找出当前的AI计数器是什么,所以我知道进入的是什么?
我需要这个,因为我试图将WP posts表回填到我正在使用的新自定义帖子类型中,并且我需要将插入的id放入GUID列中。
答案 0 :(得分:1)
也许mysql LAST_INSERT_ID()函数可以帮到你。 http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
答案 1 :(得分:0)
我假设你想要一些与用户ID具有相同值的列。 但你为什么要那样做?只需使用用户ID,即使您将其用作参考ID。
答案 2 :(得分:0)
AFAIK,您无法访问正在插入的行的auto_increment值。我建议插入行,然后读取它的ID并更新它以填充你需要知道ID的字段。
(为什么你需要它?如果你有这样的鸡蛋问题,你的数据库似乎需要一些规范化。)
答案 3 :(得分:0)
这是一种做法。这对我有用:
1)只执行2个单独的MySql查询。第一个将post值插入到wp_posts表中。你应该插入所有列,除了在“guid”列中插入一些占位符,如“0”。
2)第二个查询在第一个查询之后执行,在这里您可以调用LAST_INSERT_ID()函数来获取上一个查询的真实最后一个插入ID。第二个查询使用正确的ID号更新“guid”字段。
您可以将其插入到循环中,以便从csv文件中大量插入WP帖子。
您应该在网站脱机时执行此操作或首先锁定表格,以便在其他地方之间不会出现其他查询请求。
示例:第一次查询(抱歉列格式化,但更容易调试):
mysql_query("INSERT INTO wp_posts(
ID,
post_author,
post_date,
post_date_gmt,
post_content,
post_title,
post_excerpt,
post_status,
comment_status,
ping_status,
post_password,
post_name,
to_ping,
pinged,
post_modified,
post_modified_gmt,
post_content_filtered,
post_parent,
guid,
menu_order,
post_type,
post_mime_type,
comment_count
) VALUES (
'null',
'1',
'$timestmp',
'$timestmp',
'$content',
'$posttitle',
'',
'publish',
'open',
'open',
'',
'$postname',
'',
'',
'$timestmp',
'$timestmp',
'',
'0',
'$uiai',
'0',
'post',
'',
'0'
)") or die(mysql_error());
第二次查询:
$uid = mysql_insert_id();
$uiai = 'http://yoursite.net/wordpress/?post_type=post&p='.$uid;
mysql_query("UPDATE wp_posts SET guid = '$uiai' WHERE ID = '$uid'");
...另外,当你循环遍历许多插入时,有时它可以最大化PHP脚本允许的最大执行时间,并且上传被中断。它有助于使用set_time_limit(0);整个脚本,所以最大允许时间计数器定期重置。
...希望这会有所帮助:)
答案 4 :(得分:0)
也许您可以在AUTO_INCREMENT
查询中使用information_schema.tables
中表格的INSERT ... SELECT
值。理论上INSERT ... SELECT
应该锁定information_schema.tables
,AUTO_INCREMENT
值应该是用于下一个INSERT
的ID。但是你几乎不应该测试它并考虑性能问题。
答案 5 :(得分:-1)
use mysql_insert_id() to get last inserted id
您可以在以下网址查看更多信息: http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
答案 6 :(得分:-3)
我最终只是拔出了最后一个id:
$this->lID = mysql_fetch_assoc(mysql_query("SELECT ID FROM wp_posts ORDER BY ID DESC LIMIT 1"));
$this->lID = $this->lID[ID];