2013-12-23 41 views
-3

为什么下面的工作,当我把它粘贴到phpmyadmin,但是如果我尝试运行查询使用PHP它不?为什么这只能在php myadmin中使用,而不能在php中使用?

$sql="BEGIN; 
INSERT INTO nodes (admin_id,title) 
VALUES (1,'test'); 
INSERT INTO themes (theme_id,directory) 
VALUES (LAST_INSERT_ID(),'test'); 
COMMIT;"; 
$sql_result=mysql_query($sql); 

这与LAST_INSERT_ID()有关...但我不知道什么?!

+5

这可能是你使用多个语句。 – jeremy

+2

不工作如何?它会抛出错误吗?将'mysql_query($ sql);'改为'mysql_query($ sql)或者死掉(mysql_error());'找出来。 –

+0

你确定你的连接已经建立到正确的数据库并且是有效的吗? – JAL

回答

2

你不能在mysql_query运行多个查询。所以你必须打破它

mysql_query('BEGIN'); 
mysql_query('INSERT INTO nodes (admin_id,title) VALUES (1,"test")'); 
$id = mysql_insert_id(); 
mysql_query('INSERT INTO themes (theme_id,directory) VALUES (' . $id . ', "test")'); 
mysql_query('COMMIT'); 

请注意链接中的红色框。所有这些功能都是已弃用

+0

非常感谢Machavity,但是如果它们都运行单独的查询,那么它是否会因此而不求和BEGIN和COMMIT? – jon

+0

你也会推荐mysqli吗?看到mysql函数似乎都被弃用了? – jon

+0

是的,你需要切换到'mysqli'。至于交易,并非如此。看看你的原始SQL。所有这些陈述都是单独的查询。我所做的只是把它们分解成PHP可以运行的东西。 – Machavity

相关问题