PHP的mysqli准备语句像
我怎么能用mysqli查询LIKE并获得所有结果?
这是我的代码,但它没有工作:
$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行。 那么即使返回多于一行,我怎样才能得到所有的结果呢?
这是如何正确获取结果
$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"; }
我希望你能意识到我直接从这里和这里的手册中得到了答案,这是你应该先走的地方。
作为上述给定答案的替代scheme,您还可以使用MySQL CONCAT函数:
$stmt = $db->prepare("SELECT id,Username FROM users WHERE Username LIKE CONCAT('%',?,'%') "); $stmt->bind_param("s", $param); $stmt->execute();
这意味着你不需要编辑你的$param
值,但确实使稍长的查询。