如何获取表的自动增量主键

时间:2018-01-21 18:00:37

标签: php mysql sql database

我有一个卖家的小型MySQL数据库,其中有一个表,其中每个卖家都有一个自动增量主键(并且没有任何其他唯一键属性)。现在我想从php脚本中检索每个卖家数据

// 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();

但是..要使用此查询检索数据,我需要拥有主键(即卖家的自动增量ID)。我怎么知道插入记录的主键是什么?

3 个答案:

答案 0 :(得分:2)

您可以从自己的数据中获取ID。例如,假设您有一个列出Widget记录的页面。该页面上的数据库查询可能类似于:

SELECT id,name FROM widgets

然后你将循环显示输出。在此输出中,您可能有一个链接,例如:

echo '<a href="edit.php?id=' . $row['id'] . '">Edit</a>";

会输出类似的内容:

<a href="edit.php?id=123">Edit</a>

点击该链接后,您的浏览器会转到edit.php,其中包含查询字符串数据id=123。因此,在那个页面上,您可以获得该查询字符串值:

$_GET['id']

该值将是您要显示的特定记录的ID。将其用作查询中的参数:

SELECT * FROM widgets WHERE id=?

或者,在您的特定代码中,这是您传递给函数的值:

getUserData($_GET['id'])

无论您如何设计,重点是您从数据中获取ID。你不需要直观地知道它们是什么。

答案 1 :(得分:1)

  1. 当您尝试根据auto_increment id属性从MySQL服务器检索卖方数据时。我假设你最初没有意识到表格中的任何细节。

    这可以使用PHP来处理,最初检索表中的所有ID,以及部分识别属性(如卖家名称),然后使用所选ID获取所需卖家的所有详细信息。

    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);
    
  2. 在需要检索数据时,对主键之类的属性使用auto_increment并不是一种错误的方法,但是在使用它可以单独访问所需行之前,需要预取一些包含该键的部分行。 / p>

答案 2 :(得分:0)

准备好的声明的

insert_id属性救了我。 现在就在我的insert语句之后,我可以得到表的最后一个插入主键 -

$stmt->execute();
$sid = $stmt->insert_id;

这相当于mysql中的LAST_INSERT_ID()函数。确保在插入表格行之后在同一会话中使用它。否则,它返回一个空集。