亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 470 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號