回答

收藏

php mysqli准备的语句喜欢

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

我如何使用mysqli用LIKE进行查询并获得所有结果?1 g* S' X& y. n% p/ U
这是我的代码,但是不起作用:4 r2 H0 L- p/ R2 Y$ P3 _! q
$param = "%{$_POST['user']}%";# R  `  C) j  |' Z! L
$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE ?");
3 y, J5 N+ w, B& }$stmt->bind_param("s", $param);3 N9 \$ f# v6 ]! n
$stmt->execute();
! S+ ?' K5 T# i6 A# g$stmt->bind_result($id,$username);
. G' w  d, C) g3 v0 _5 ^. b- b$stmt->fetch();) R2 y: \1 J3 A: v# d7 ~
此代码似乎不起作用。我已经搜索了很多。也可能返回多于1行。那么,即使返回的结果超过1行,我如何获得所有结果呢?
3 B! ~1 U7 e$ u/ j$ m! U               
2 b* u: J1 [4 G) K% U$ o/ N解决方案:
4 o: X; w2 ^: P3 X* _* E               
0 B  {* w4 s) e6 V. C$ C) G. E: P% k  `2 `$ g
: V/ T6 X/ ^: U. s$ k! ^" r5 V; i
                这是您正确获取结果的方式# Y# T$ W9 u: ^
$param = "%{$_POST['user']}%";* m" ?: V& G! o/ g! ~- s8 m
$stmt = $db->prepare("SELECT id,username FROM users WHERE username LIKE ?");
* r. k5 l+ K, {: B/ V$stmt->bind_param("s", $param);8 }3 a7 Z2 F& U7 G; r0 P  \
$stmt->execute();7 D( j1 m) M) f# f
$stmt->bind_result($id,$username);
) q$ c8 u4 [7 g1 E, b% T( {while ($stmt->fetch()) {
5 N9 m; r" P* r  echo "Id: {$id}, Username: {$username}";+ E! b$ `' T' Y) H7 B
}2 s9 A5 }, V* y5 J" V. i: l
或者,您也可以执行以下操作:
' X# W$ {/ D2 l2 [# s$param = "%{$_POST['user']}%";
9 F1 R9 p3 `; ?$stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?");: d6 z9 \2 |5 k
$stmt->bind_param("s", $param);& Y2 j0 g. e& l( U% f
$stmt->execute();& t& d2 |+ }' `# o' `9 h% }
$result = $stmt->get_result();
% u3 A& ]+ q' d/ _" Dwhile ($row = $result->fetch_assoc()) {# \4 C0 I$ W) o3 o1 ]/ L0 }- a
    echo "Id: {$row['id']}, Username: {$row['username']}";
8 r) c, z6 v* y, t% ]! q}4 W, a3 F5 G6 l
希望您意识到我从这里和这里的手册中直接得到了答案,这是您应该首先去的地方。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则