我在做什么:( wp_posts将ID作为主键并自动增加)
mysql_query("INSERT INTO wp_posts (post_content, post_title) VALUES ('$addEP', '$title')");
$rs = mysql_query("SELECT ID FROM wp_posts WHERE post_title='$title'");
$add_row = mysql_fetch_array($rs);
$add_postid = $add_row['ID'];
mysql_query("INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES ('$add_postid', '$cat_id')");
所以基本上,我在做的是;我将内容插入到wp_posts中,然后运行另一个查询以捕获帖子的ID
。然后将其设置为另一个表。
是否可以在不运行第二个查询来捕获ID的情况下执行此操作? 感谢。
答案 0 :(得分:3)
您可以通过mysql_insert_id()
检索上次生成的ID(每个连接)编辑:MySQL服务器还存储每个连接的id,你可以"retrieve" the id within an sql statement
INSERT INTO
wp_term_relationships
(object_id, term_taxonomy_id)
VALUES
(LAST_INSERT_ID(), '$cat_id')
解释了两种“方法”之间的细微差别
答案 1 :(得分:1)
$add_postid = mysql_insert_id();
正是您要找的。 p>
所以
$rs = ... // and
$add_row = ...
......不再需要了。
答案 2 :(得分:1)
答案 3 :(得分:1)
mysql_insert_id()
将为您返回值,但仅在插入完成后。您不能在插入中使用它来捕获新ID,因为尚未分配该ID。
在内部正在进行select last_insert_id();
。
答案 4 :(得分:1)
如果不手动传递帖子的ID
,则必须使用mysql_insert_id()。
注意:
因为mysql_insert_id()作用于上次执行的查询,所以一定要确保 在生成的查询之后立即调用mysql_insert_id() 值。
另外,如果您还没有,我建议您查看PDO。
答案 5 :(得分:1)
不是我知道的(你必须先插入才能获得正确的ID)...脚本在哪里运行? Wordpress有一个内置类,可能会更容易,它有一个存储插入ID的变量:
http://codex.wordpress.org/Class_Reference/wpdb#Class_Variables