为了账号安全,请及时绑定邮箱和手机立即绑定

PHP mysqli准备语句,如

PHP mysqli准备语句,如

沧海一幻觉 2019-07-11 10:36:20
PHP mysqli准备语句,如我如何使用mysqli进行类似的查询并获得所有结果?这是我的代码,但不起作用:$param = "%{$_POST['user']}%";$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?"); $stmt->bind_param("s", $param);$stmt->execute();$stmt->bind_result($id,$username);$stmt->fetch();这段代码似乎不起作用。我已经搜了很多遍了。此外,它可能返回超过1行。那么,即使它返回超过1行,我如何才能得到所有的结果呢?
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

下面是正确获取结果的方法

$param = "%{$_POST['user']}%";$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?");
$stmt->bind_param("s", $param);$stmt->execute();$stmt->bind_result($id,$username);while ($stmt->fetch()) {
  echo "Id: {$id}, Username: {$username}";}

或者你也可以:

$param = "%{$_POST['user']}%";$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?");
$stmt->bind_param("s", $param);$stmt->execute();$result = $stmt->get_result();while ($row = $result->fetch_array(MYSQLI_NUM)) {
  foreach ($row as $r) {
    print "$r ";
  }
  print "\n";}

我希望你能意识到我是直接从手册上得到答案的这里这里这是你应该先去的地方。


查看完整回答
反对 回复 2019-07-11
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

CONCAT在准备好的陈述中是安全的从注入,但您应该谨慎使用LIKE准备好的陈述中的子句。考虑到这一点:$stmt=$db->prepare("SELECT 顾客ASsuggestion哪里customername比如conat(“cust_”,?,‘%’);“;‘然后’$key='J%';(甚至$key='';), $stmt->bind_param('s', $key);..现在$stmt->execute();会回来所有记录..因此,在处理具有“like”子句的准备语句时,仍然需要处理_%以适当的方式。即使使用准备好的语句,转义就像$key='J\%';是必要的。

查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 451 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信