1

我有一个user_name包含 3 个字段的表,id, Name, Emailidauto_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'];

谁能告诉我如何将两个查询合二为一。

4

7 回答 7

8

看一下mysql_insert_id()功能。

mysql_query($insertStatementOnly);
$new_userid = mysql_insert_id();
于 2009-07-13T07:29:25.197 回答
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方法的库。

于 2009-07-13T07:32:29.670 回答
1

答案很简单:你就是做不到。

http://php.net/mysql_query

于 2009-07-13T07:30:20.017 回答
1

我还建议您避免在 mysql_query 中使用错误抑制运算符“@”,因为您可能不知道任何 mysql 错误。至少做

mysql_query($sql) or die("error: " . mysql_error()) ;
于 2009-07-13T08:15:57.133 回答
1

如果您将 Zend 框架与 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();
}
于 2009-07-13T09:53:23.927 回答
1

是的,您可以使用 Shell 命令<BR> mysql -user -p -h database -e ' SQL STATEMENT 1; SQL 语句 2;SQL 语句 3;.......; '

PHP / MYSQL 程序员

于 2011-04-16T13:32:53.500 回答
0

这可能会做你想要的:

insert into table1 (Name,Emails) values ('qqq','www');
select max(id) as lastinserted from table1;
于 2011-09-14T23:28:32.470 回答