第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

PHP PDO準(zhǔn)備的語句-MySQL LIKE查詢

PHP PDO準(zhǔn)備的語句-MySQL LIKE查詢

慕田峪7331174 2019-11-02 10:33:05
我正在嘗試通過php的PDO類(mysql驅(qū)動程序)進(jìn)行搜索。我在MySQL客戶端上使用以下查詢(更改表名以保護(hù)無辜者):SELECT    hs.hs_pk,           hs.hs_text,           hs.hs_did,           hd.hd_did,           hd.hd_text,           hv.hv_text,           hc.hc_text FROM      hs LEFT JOIN hd  ON       hs.hs_did = hd.hd_did LEFT JOIN hd  ON       hd.hd_vid = hv.hv_id LEFT JOIN hc  ON       hd.hd_pclass = hc.hc_idWHERE     hs.hs_text LIKE "%searchTerm%"LIMIT 25;不管我使用什么搜索詞,它都像一個符咒。但是,當(dāng)我轉(zhuǎn)到php時,無法獲得返回任何內(nèi)容的信息。我嘗試了幾種看起來合乎邏輯的語法,但是沒有嘗試過。這是我現(xiàn)有的代碼:$handle = fopen('/foo/bar/test.log', 'w+');fwrite($handle, "doSearch, with search term: $searchTerm\n");$sql = 'SELECT   hs.hs_pk,           hs.hs_text,           hs.hs_did,           hd.hd_did,           hd.hd_text,           hv.hv_text,           hc.hc_text FROM      hs LEFT JOIN hd  ON       hs.hs_did = hd.hd_did LEFT JOIN hd  ON       hd.hd_vid = hv.hv_id LEFT JOIN hc  ON       hd.hd_pclass = hc.hc_idWHERE     hs.hs_text LIKE :searchTermLIMIT 25';try { $dbh = new PDO('mysql:host=localhost;dbname=awdb', "user", "password"); fwrite($handle, "connected to DB\n"); $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"')); while ($row = $prep->fetch(PDO::FETCH_ASSOC)) {  $i++;  $result[$i]['subText'] = $row['hs_pk'];  $result[$i]['subText'] = $row['hs_text'];  $result[$i]['subDid'] = $row['hs_did'];  $result[$i]['devDid'] = $row['hd_did'];  $result[$i]['devText'] = $row['hd_text'];  $result[$i]['vendorText'] = $row['hv_text'];  $result[$i]['classText'] = $row['hc_text']; }    $dbh = null;}   catch (PDOException $e) {  print "Error!: " . $e->getMessage() . "<br/>";  die();}我也嘗試了以下操作(SQL WHERE子句和prep-> execute行已全部更改):WHERE hs.hs_text LIKE CONCAT(\'%\', ?, \'%\') $ret = $prep->execute(array($searchTerm));WHERE hs.hs_text LIKE "%:searchTerm%" $ret = $prep->execute(array(':searchTerm' => $searchTerm));WHERE hs.hs_text LIKE ":searchTerm" $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));等等...
查看完整描述

3 回答

?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個贊

$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));

錯了 您不需要雙引號。


WHERE hs.hs_text LIKE ":searchTerm" 

$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

這也是錯誤的。嘗試:


$prep = $dbh->prepare($sql);

$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

說明:準(zhǔn)備好的語句不能簡單地進(jìn)行字符串替換。它們傳輸?shù)臄?shù)據(jù)與查詢完全分開。僅在將值嵌入查詢中時才需要引號。


查看完整回答
反對 回復(fù) 2019-11-02
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個贊

$prep = $dbh->prepare($sql);

$ret = $prep->execute(array('searchTerm' => $searchTerm));


查看完整回答
反對 回復(fù) 2019-11-02
?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個贊

好吧,我解決了這個問題。坦率地說,我是個白癡...謝謝大家看到這些并給出了很好的反饋。問題是表名中的錯字(我更改了,所以這里沒有人能看到我的問題開頭...)。但是,這些建議確實(shí)使我找到了問題,因此,謝謝亞當(dāng),jkndrkn和troelskn。


作為記錄,以下組合效果很好:


WHERE aw_hcl_subdevices.hs_text LIKE CONCAT(\'%\', ?, \'%\')

$ret = $prep->execute(array($searchTerm));


查看完整回答
反對 回復(fù) 2019-11-02
  • 3 回答
  • 0 關(guān)注
  • 685 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號