這有點看起來很複雜,我想獲得處理後的查詢的id列值。我如何在處理它後獲取SQL查詢ID?
例如:
$qu = mysql_query("INSERT INTO msgs (msg,stamp) VALUES('$v1','$v2')");
我想存儲在數據庫中的相關信息後,讓該查詢的ID。
如果不可能,獲取最後的ID記錄並添加1將是安全和保證的?
注:我使用PHP和MySQL
感謝
這有點看起來很複雜,我想獲得處理後的查詢的id列值。我如何在處理它後獲取SQL查詢ID?
例如:
$qu = mysql_query("INSERT INTO msgs (msg,stamp) VALUES('$v1','$v2')");
我想存儲在數據庫中的相關信息後,讓該查詢的ID。
如果不可能,獲取最後的ID記錄並添加1將是安全和保證的?
注:我使用PHP和MySQL
感謝
如果使用標準的MySQL在PHP中,你所要做的,就是用mysql_insert_id()
這需要資源$link
作爲參數(你的MySQL連接)
http://php.net/manual/en/function.mysql-insert-id.php
基本用法:
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
mysql_query("INSERT INTO mytable (product) values ('some product')");
echo 'Last inserted record has id of ' . mysql_insert_id();
?>
下面是關於這個MySQL的文檔。
http://dev.mysql.com/doc/refman/5.1/en/getting-unique-id.html
如果它是一個AUTO_INCREMENT列,使用PHP函數mysql_insert_id。
檢查here如果它`不適合你使用的mysqli爲PHP
不,這是不安全的搶最高的ID,只是加1並使用它作爲新的ID問題。這就是所謂的競賽條件。如果兩個查詢同時嘗試執行此操作,則可能是它們都選擇了SAME最高的ID,都嘗試添加1,然後BOTH嘗試使用相同的ID(這會很糟糕)。
這是更好的使用AUTO_INCREMENT字段,你這樣做,你可以爲(從http://php.net/manual/en/function.mysql-insert-id.php)如下檢索在PHP中插入ID:
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
?>
下面的代碼:
$qu = mysql_query("INSERT INTO msgs (msg,stamp) VALUES('$v1','$v2')");
$recent_id = mysql_insert_id();
變量recent_id是你正在尋找的。
獲取最後的ID記錄並添加1可能不安全,不保證。如果你真的想要安全起見,你最好使用我指出的解決方案。
希望它有幫助。