how to get the auto-increment primary key of a table
我有一个小型的MySQL卖家数据库,其中有一个表,其中每个卖家都有一个自动递增的主键(并且没有其他任何唯一的键属性)。现在我想从PHP脚本中检索每个卖家的数据
1 2 3 4 5 | // Nothing wrong with this code $stmt = $this->conn->prepare("SELECT * FROM seller WHERE id= ? LIMIT 1"); $stmt->bind_param("i", $ud); $stmt->execute(); $result = $stmt->get_result(); |
但是…要用这个查询检索数据,我需要有主键(即卖家的autoincrement id)。我如何知道插入的记录的主键是什么?
您可以从自己的数据中获取ID。例如,假设您有一个页面,其中列出了小部件记录。该页上的数据库查询可能类似于:
1 | SELECT id,name FROM widgets |
然后将输出显示在一个循环中。在这个输出中,您可能有一个链接,例如:
1 | echo 'Edit"; |
号
输出如下:
1 | Edit |
单击该链接时,浏览器将使用查询字符串数据
1 | $_GET['id'] |
。
该值将是要显示的特定记录的ID。将其用作查询中的参数:
1 | SELECT * FROM widgets WHERE id=? |
或者,在特定代码中,这是传递给函数的值:
1 | getUserData($_GET['id']) |
。
无论您如何设计它,关键是要从数据中获取ID。你不需要凭直觉知道它们是什么。
当你试图从MySQLServer中基于auto_increment id属性检索卖家数据时。我假设最初您不知道表中的任何细节。
这可以通过使用PHP来处理,首先检索表中的所有ID,以及一个部分标识的属性(如seller name),然后使用所选ID获取所需seller的所有详细信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | if(!$con) die(); function fetchId(){ $result = mysqli_query($con,"SELECT id, name FROM seller"); if($result && mysqli_num_rows($result)>0){ while($row = mysqli_fetch_assoc($result)){ echo"ID:".$row["id"]." NAME:".$row["name"]; retrieveData($row["id"]); } } } function retrieveData($id){ $result = mysqli_query($con,"SELECT * FROM seller WHERE id=".mysqli_real_escape_string($con,$id)); if($result && mysqli_num_rows($result)==1){ $row = mysqli_fetch_assoc($result) print_r($row); } } mysqli_close($con); |
。
在需要检索数据时,对诸如主键之类的属性使用自动增量并不是一种错误的方法,但是在使用它可以单独访问所需行之前,必须预先获取包含该键的部分行。
准备好的语句的
1 2 | $stmt->execute(); $sid = $stmt->insert_id; |
这相当于mysql中的