如何显示/回显执行的mysqli预处理语句中的数据

时间:2016-10-05 14:06:06

标签: php mysql mysqli prepared-statement

我试图了解如何预防注射。在此之前,我将按如下方式构建我的代码。

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

所以我很确定该语句设置正确,但现在需要将返回的列回显到我网页上的正文

2 个答案:

答案 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没有这样的问题