PHP mysqli准备语句,如

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行,我如何才能得到所有的结果呢?


沧海一幻觉
浏览 452回答 3
3回答

MMMHUHU

下面是正确获取结果的方法$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";}我希望你能意识到我是直接从手册上得到答案的这里和这里这是你应该先去的地方。

慕雪6442864

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