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


How do I display/echo the data from an executed 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);?>

然后要在body中显示找到的用户名,我将:

<?php $row = mysqli_fetch_assoc($result);?>
<?php echo $row['uname'] ;?>

我正试图用我自己准备的语句来完成同样的事情。到目前为止,我有以下内容:

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

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

编辑:在执行后添加这些规则。

$res = $query->get_result();
$row = $res->fetch_assoc();

之后,你可以做你以前做的事情,用老方法。

例行建议。考虑使用PDO而不是mysql。让你们看看它们的区别。代码:

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