如何知道剛剛插入數據庫那條數據的id


如何知道剛剛插入數據庫那條數據的id

一、總結

一句話總結:這些常見功能各個框架里面都有,可以查看手冊,thinkphp里面是$userId = Db::name('user')->getLastInsID();

 

1、在mysql和mysqli中如何選擇?

用mysqli,php官方推薦

 

2、mysqli中如何查找到剛剛出入數據庫的那條數據的id?

mysqli對象的indert_id屬性

$mysqli->insert_id

 

 

 

二、PHP如何找到剛剛插入數據庫的一條數據的ID?

$_title=$_POST['input_title'];
$_described=$_POST['described'];
mysql_query("insert into questionnaire (quesTitle,quesDescribe,createTime) values('$_title','$_described',now())");
header(index.php?quesid=剛剛插入的那個編號)

如上所述,我剛剛插入的一條數據,現在要立刻跳到該數據自動生成的id的頁面去,怎么獲取呢??

 

你看看 mysql_insert_id 這個函數. 獲取上一步insert 插入成功的id, 不成功的時候是沒有值的

 

mysql_insert_id() 函數返回上一步 INSERT 操作產生的 ID。 沒事多自己百度一下,多看手冊,別一有問題就到處發帖,這種只要一分鍾就能知道的答案 ,你卻要花十幾分鍾,甚至幾個小時,甚至沒人回答,我只能說一句,哥們 你這是何苦呢?

 

mysql_insert_id()將 MySQL 內部的 C API 函數 mysql_insert_id()的返回值轉換成 long(PHP 中命名為 int)。如果 AUTO_INCREMENT 的列的類型是 BIGINT,則 mysql_insert_id()返回的值將不正確。可以在 SQL 查詢中用 MySQL 內部的 SQL 函數 LAST_INSERT_ID()來替代。
例子一:]mysql_insert_id()]例子b]b]
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
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());
?>

 

 
function mysql_insert_id ($link_identifier = null) {}

/**
 * @deprecated 5.5
 * Get result data
 * @link http://php.net/manual/en/function.mysql-result.php
 * @param resource $result 
 * @param int $row <p>
 * The row number from the result that's being retrieved. Row numbers 
 * start at 0.
 * </p>
 * @param mixed $field [optional] <p>
 * The name or offset of the field being retrieved.
 * </p>
 * <p>
 * It can be the field's offset, the field's name, or the field's table 
 * dot field name (tablename.fieldname). If the column name has been
 * aliased ('select foo as bar from...'), use the alias instead of the 
 * column name. If undefined, the first field is retrieved.
 * </p>
 * @return string The contents of one cell from a MySQL result set on success, or 
 * false on failure.
 * @since 4.0
 * @since 5.0
 */

 

$mysqli->insert_id

 1 Example #1 $mysqli->insert_id example
 2 
 3 面向對象風格
 4 
 5 <?php
 6 $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
 7 
 8 /* check connection */
 9 if (mysqli_connect_errno()) {
10     printf("Connect failed: %s\n", mysqli_connect_error());
11     exit();
12 }
13 
14 $mysqli->query("CREATE TABLE myCity LIKE City");
15 
16 $query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
17 $mysqli->query($query);
18 
19 printf ("New Record has id %d.\n", $mysqli->insert_id);
20 
21 /* drop table */
22 $mysqli->query("DROP TABLE myCity");
23 
24 /* close connection */
25 $mysqli->close();
26 ?>

 

thinkphp 5.0
多去查看參考手冊,里面肯定有

insert 方法添加數據成功返回添加成功的條數,insert 正常情況返回 1

添加數據后如果需要返回新增數據的自增主鍵,可以使用getLastInsID方法:

Db::name('user')->insert($data); $userId = Db::name('user')->getLastInsID(); 

或者直接使用insertGetId方法新增數據並返回主鍵值:

Db::name('user')->insertGetId($data); 

insertGetId 方法添加數據成功返回添加數據的自增主鍵

 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM