如何显示/回显已执行mysqli prepared语句中的数据

oaxa6hgo  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(338)

我正试图了解如何防止注射。在此之前,我将按以下方式构造代码。

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

因此,我非常确定该语句设置正确,但现在需要将返回的列回显到我的网页的正文中

jexiocij

jexiocij1#

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

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

在那之后,你就可以像以前那样用它了,用老办法。

xmq68pz9

xmq68pz92#

例行公事的建议。考虑使用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没有这样的问题

相关问题