将信息分配给表并创建自动递增的ID ...如何获取新创建的ID?

时间:2012-05-28 21:22:42

标签: php mysqli get addition

我有一段代码,用于存储mysql表中的一些基本用户选择。

    $isACompany = $_POST['isACompany'];
    $hasDifBilling = $_POST['hasDifBilling'];
    $stmt = $link->prepare("
        INSERT INTO user_info SET
        id='',
        isACompany = ?,
        hasDifBilling = ?'
    ");
    if (!$stmt)
    {
        $error = "{$link->errno}  :  {$link->error}";
        include "$docRoot/html/main/error.html.php";
        exit();
    }
    if (!$stmt->bind_param("ii", $isACompany, $hasDifBilling))
    {
        $error = "{$stmt->errno}  :  {$stmt->error}";
        include "$docRoot/html/main/error.html.php";
        exit();
    }
    if (!$stmt->execute())
    {
        $error = "{$stmt->errno}  :  {$stmt->error}";
        include "$docRoot/html/main/error.html.php";
        exit();
    }

鉴于该代码,我将如何在此实例中获取新创建的id?

我还有另外一个与此代码相关的问题,虽然它不是问题的一部分......因为前两个变量绘制了这两个帖子的值,并且看到这些值被硬编码到html并通过复选框选择(“1”或“”为0)。在将信息添加到数据库之前,我还需要清理它们吗?

1 个答案:

答案 0 :(得分:1)

正如Michael正确指出的那样,您插入的行的ID可以使用$stmt->insert_id属性进行检索。

这个问题中更重要的部分是第二部分,答案就是大胖 YES 必须逃避用户输入的所有内容!仅仅因为你将它“硬编码”到HTML中,并不意味着用户无法操纵它。有一百万种方法可以做到这一点 - Javascript injection和“欺骗”HTTP请求只需两个。

必须逃避来自客户端的任何。总是。故事结束。