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

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

奇怪的 MySQL 通配符行為

奇怪的 MySQL 通配符行為

PHP
MMMHUHU 2022-07-22 19:08:54
我遇到了一個奇怪的行為,我無法在我的 PHP 代碼中弄清楚使用此代碼(暫時省略全部)-->WHERE ss.showName LIKE '%".$searchFor."%' $searchFor由用戶輸入定義并通過 AJAX 請求發送。結果存儲$result為$tvLine. 然后在 html 中顯示$tvLine['showName'];現在假設我正在尋找 ss.showName "Joni and Friends"...如果我輸入任何數量的 "Joni and" 中使用的字母,我會收到正確的結果 --> "Joni and Friends" 同樣,如果我輸入任何數量的“朋友”中使用的字母,我會收到正確的結果-->“喬尼和朋友”。但是,如果我只輸入“F”或“f”,我不會收到任何結果。為什么會這樣?謝謝if (  isset($_GET['userInput']))  {        $searchFor = $_GET['userInput']; // the actual user search content        $searchDate = $_GET['sDate']; // ascertains the correct day for search        $searchTz = $_GET['sTz'];   // ascertains the correct timezone for search        // conditional statement to check time difference for MySQL            if ($searchTz == "UK"){ $searchTz = 0;}                 else { $searchTz = 5; }        global $wpdb;         $now = date("Y-m-d H:i:s");        $params = array($now);        $sql = "SELECT se.*, ss.showName, TIMEDIFF(NOW(), UTC_TIMESTAMP) as server_date            FROM showpress_episodes             AS se LEFT JOIN showpress_shows AS ss             ON se.showId=ss.id             WHERE ss.showName LIKE '%".$searchFor."%'             AND DATE(episodeStartTime) = CURRENT_DATE() + INTERVAL $searchDate DAY            AND episodeStartTime >= NOW() - INTERVAL $searchTz HOUR            ORDER BY episodeStartTime             ";        $result = $wpdb->get_results($wpdb->prepare($sql, $params), ARRAY_A);?><h2>Search Results &nbsp; &nbsp; <a id="search_close"  onclick="closeForm()">X</a></h2><?php// create table to hold SQL             if (count($result) < 1){            echo ('<p>                    <table border="0">                    <tr><td>Show Name</td></tr>                    <tr ><td colspan="3">NO RESULTS </td> </tr>                    <tr><td>'.$searchFor.'</tr></td>                    </table>');                 }
查看完整描述

1 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

你應該閱讀:wpdb::prepare( string $query, mixed $args )


代碼應如下所示(未經測試,我沒有要測試的 wordpress):


    global $wpdb; 

    //$now = date("Y-m-d H:i:s");

    $params = array("%".$searchFor."%", $searchDate, $searchTz);

    $sql = "SELECT se.*, ss.showName, TIMEDIFF(NOW(), UTC_TIMESTAMP) as server_date

        FROM showpress_episodes 

        AS se LEFT JOIN showpress_shows AS ss 

        ON se.showId=ss.id 

        WHERE ss.showName LIKE %s 

        AND DATE(episodeStartTime) = CURRENT_DATE() + INTERVAL %d DAY

        AND episodeStartTime >= NOW() - INTERVAL %d HOUR

        ORDER BY episodeStartTime 

        ";

    $result = $wpdb->get_results($wpdb->prepare($sql, $params), ARRAY_A);


查看完整回答
反對 回復 2022-07-22
  • 1 回答
  • 0 關注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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