回答

收藏

php mysqli准备的语句喜欢

技术问答 技术问答 106 人阅读 | 0 人回复 | 2023-09-13

我如何使用mysqli用LIKE进行查询并获得所有结果?4 ~9 A0 F4 L: l3 H3 Z+ h6 B7 j
这是我的代码,但是不起作用:* c( A* }9 A+ ]$ Q* @
$param = "%{$_POST['user']}%";) L8 P2 R* d* i& s8 ?; Z% @' G, e
$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?");5 ^- _* h; y% B1 M5 q) m* c
$stmt->bind_param("s", $param);
- s! b! t8 q  f; n1 Q$stmt->execute();
; e# J. V# K4 r5 F$stmt->bind_result($id,$username);, s; J6 |8 J% ?2 B
$stmt->fetch();/ E9 ^8 J  d4 b) k
此代码似乎不起作用。我已经搜索了很多。也可能返回多于1行。那么,即使返回的结果超过1行,我如何获得所有结果呢?0 D$ z% p/ J) h( t2 |
               
" M0 [+ ^. s1 J7 e4 k9 d解决方案:
# e3 ?* n, h- J9 L+ X               
3 ?% `$ e2 m" h! d5 }
( W4 n( a  h0 [9 E! G$ I% @. y/ X- a1 i2 S6 _+ v; F. S5 M& I% U
                这是您正确获取结果的方式2 ?' v& J* @/ }/ `- U
$param = "%{$_POST['user']}%";
" n8 b2 }% m, E; y; ]9 O$stmt = $db->prepare("SELECT id,username FROM users WHERE username LIKE ?");  W* I- K! |6 A5 j
$stmt->bind_param("s", $param);
$ G" g. P: Q; F0 W$stmt->execute();* ?& b4 c) x2 \0 G. @
$stmt->bind_result($id,$username);
# F- |% ]& e* G( d& K) f* ^while ($stmt->fetch()) {  Z' g8 j: M2 w
  echo "Id: {$id}, Username: {$username}";+ Q2 g0 B1 ~3 F; q+ B/ m* u% A
}
( C+ y% p" |8 m% [8 y) q! w+ M/ J或者,您也可以执行以下操作:( u" I# n4 s. |1 U' z
$param = "%{$_POST['user']}%";
$ V( m. B7 c* l/ g7 {+ E$stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?");! j3 A6 b2 J! {8 Y; n+ [- \6 V
$stmt->bind_param("s", $param);
: E; c  K# _; [! n$ e+ v) Z5 l$stmt->execute();: ?* x- k. _6 s" o/ d
$result = $stmt->get_result();
) o) c! q2 p; ?2 Q0 ]4 d0 ?6 Y0 Xwhile ($row = $result->fetch_assoc()) {
' X% @+ |" T3 A4 X6 s" _4 I! D    echo "Id: {$row['id']}, Username: {$row['username']}";
+ z( I) I% s/ h3 M}+ S8 V2 L8 q- E5 k. N
希望您意识到我从这里和这里的手册中直接得到了答案,这是您应该首先去的地方。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则