我有一个包含3个字段的表user_name
,id, Name, Email
(id
是auto_increment
字段)。我想在PHP中执行以下查询,但它不返回任何结果。
INSERT INTO user_name (Name, Email) VALUES ('Example', 'example@xyz.com');
SELECT LAST_INSERT_ID() AS 'userid';
当我在PHP中执行上述查询时,它不会返回任何内容。
$_SQL="INSERT INTO user_name (Name,Email) VALUES ('Example', 'example@xyz.com');
SELECT LAST_INSERT_ID() AS 'userid';";
$result_last_id = @mysql_query($_SQL);
$rs_insert = mysql_fetch_array($result_last_id);
$new_userid = $rs_insert['userid'];
任何人都可以告诉我如何将两个查询同时执行。
答案 0 :(得分:8)
查看mysql_insert_id()
功能。
mysql_query($insertStatementOnly);
$new_userid = mysql_insert_id();
答案 1 :(得分:5)
看起来您不需要执行多个查询,但我在下面介绍了如何执行此操作。您想要的是最后插入的ID,您可以从mysql_insert_id
获得。
来自对mysql_query
的文档的评论:
该文档声称“不支持多个查询”。
但是,似乎支持多个查询。您只需将标志65536作为mysql_connect的5参数(client_flags)传递。该值在/usr/include/mysql/mysql_com.h中定义:
#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */
一次执行多个查询,mysql_query函数将仅返回第一个查询的结果。其他查询也将被执行,但你不会得到它们的结果。
或者,请查看mysqli
库,其中包含multi_query
method。
答案 2 :(得分:1)
真的很简单:你就是做不到。
答案 3 :(得分:1)
我还建议你避免使用mysql_query中的错误抑制运算符'@',因为你可能没有意识到任何mysql错误。至少做
mysql_query($sql) or die("error: " . mysql_error()) ;
答案 4 :(得分:1)
如果您使用Zend Framework和PDO定义的MySQL数据库,您只需使用:
$database=Zend_Db::factory('PDO_MySQL',Array('hostname'=>'localhost','username'=>'x','password'=>'y','dbname'=>'z');
$connectionHandle=$database->getConnection();
$rowsInserted=$connectionHandle->insert('database_name','INSERT INTO x (a,b) VALUES (c,d)');
if ($rowsInserted>0) {
$autoIncrementValue=$connectionHandle->lastInsertId();
}
答案 5 :(得分:1)
是您可以使用Shell命令<BR>
mysql -user -p -h database -e'
SQL语句1;
SQL语句2;
SQL语句3;
.......;
“
答案 6 :(得分:0)
这可能会做你想要的:
insert into table1 (Name,Emails) values ('qqq','www');
select max(id) as lastinserted from table1;