0

我有一段代码在 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)。在将信息添加到数据库之前,我还需要对它们进行清理吗?

4

1 回答 1

1

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

这个问题更重要的部分是第二部分,答案是一个大胖子,的,你必须逃避来自用户输入的所有内容!仅仅因为您将其“硬编码”到 HTML 中,并不意味着用户无法对其进行操作。有一百万零一种方法可以做到这一点 - Javascript 注入和“欺骗”HTTP 请求仅举两例。

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

于 2012-05-28T21:32:23.863 回答