我有一段代码,用于存储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)。在将信息添加到数据库之前,我还需要清理它们吗?
答案 0 :(得分:1)
正如Michael正确指出的那样,您插入的行的ID可以使用$stmt->insert_id
属性进行检索。
这个问题中更重要的部分是第二部分,答案就是大胖 YES 你必须逃避用户输入的所有内容!仅仅因为你将它“硬编码”到HTML中,并不意味着用户无法操纵它。有一百万种方法可以做到这一点 - Javascript injection和“欺骗”HTTP请求只需两个。
您必须逃避来自客户端的任何。总是。故事结束。