我试图了解如何预防注射。在此之前,我将按如下方式构建我的代码。
$empid = $_REQUEST['empid']
$query =("SELECT e.first AS first, e.last AS last, e.username AS uname FROM emps e WHERE e.id='$empid'");
$result = mysqli_query($con, $query);?>
然后在我的身体中显示找到的用户名,我会的。
<?php $row = mysqli_fetch_assoc($result);?>
<?php echo $row['uname'] ;?>
我正在尝试使用mysqli预处理语句完成同样的事情。到目前为止,我有以下内容。
$query= $con->prepare("SELECT e.first AS first, e.last AS last, e.username AS uname FROM emps e WHERE e.id=?");
$query->bind_param("i", $empid);
$query->execute();
$query->close();
所以我很确定该语句设置正确,但现在需要将返回的列回显到我网页上的正文
答案 0 :(得分:1)
编辑: 执行后添加这些规则。
$res = $query->get_result();
$row = $res->fetch_assoc();
然后你可以用旧的方式做你曾经做过的事情。
答案 1 :(得分:0)
常规建议。考虑使用PDO而不是mysqli。只是为了向您展示差异。你的代码:
$query= $con->prepare("SELECT first, last, username AS uname FROM emps WHERE id=?");
$query->bind_param("i", $empid);
$query->execute();
$res = $query->get_result();
$row = $res->fetch_assoc();
PDO:
$query= $con->prepare("SELECT first, last, username AS uname FROM emps WHERE id=?");
$query->execute([$empid]);
$row = $query->fetch();
差不多两倍。
请注意,get_result
无法保证可用。它可以在您的本地开发人员上运行,但请检查您是否在生产服务器上使用它。
虽然PDO没有这样的问题