1

user_name私は3つのフィールドを持つテーブルを持っています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'];

両方のクエリを 1 つに実行する方法を教えてください。

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

また、mysql_query でエラー抑制演算子「@」を使用しないことをお勧めします。これは、mysql エラーに気付かない可能性があるためです。せめてそうしろよ

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

はい、シェル コマンド<BR> mysql -user -p -h database -e ' SQL STATEMENT 1;を使用できます。SQL ステートメント 2; SQL ステートメント 3; .......; '

PHP / MYSQL プログラマー

于 2011-04-16T13:32:53.500 に答える
1

簡単な答えは本当に: あなたはそれを行うことはできません。

http://php.net/mysql_query

于 2009-07-13T07:30:20.017 に答える
1

PDO 定義の MySQL データベースで Zend Framework を使用している場合は、次のようにします。

$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 に答える
0

これはあなたが望むことをするかもしれません:

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