0

YouTubeでこのphpacademyチュートリアルに従いましたが、echoで印刷するキーワードを取得できません。代わりに私は得る:

`keywords` LIKE '%keyword%'

WTH?コードは逐語的にコピーされています。プラットフォームの問題である可能性がありますか?

このステートメント->$where .= "キーワードに問題がありLIKE '%keyword%'";ますか?

<?php

    include 'db.inc.php';

    function search_results($keywords) {
        $returned_results=array();
        $where="";

        $keywords=preg_split('/[\s]+/', $keywords);
        $total_keywords = count($keywords);

        foreach($keywords as $key=>$keyword){
            $where .= "`keywords` LIKE '%keyword%'"; // Where's the issue?
            if($key != ($total_keywords-1)){
                $where .= " AND ";  
            }
        }  

        echo $where;
    }

?>
4

3 に答える 3

1

コードを少しリファクタリングしましたが、より明確になりました。コード内のコメントを参照してください。

include 'db.inc.php';

function search_results($keywords) {
    $where = array();

    // skip empty results with PREG_SPLIT_NO_EMPTY flag
    $keywords = preg_split('/[\s]+/', $keywords, -1, PREG_SPLIT_NO_EMPTY);

    foreach ($keywords as $keyword) {
        // escape string (anti sql injection)
        $keyword = mysql_real_escape_string($keyword);

        // your problem was using keyword instead of $keyword
        $where[] = "`keywords` LIKE '%$keyword%'";
    }  

    echo implode(' AND ', $where);
}
于 2012-07-07T05:23:44.967 に答える
0

where句のチュートリアルからのタイプミスのように見えます-キーワード変数名の前に$文字がありません。他の回答は答えを提供しましたが、タイプミスのように見えることは指摘されていません。これは、PHPのように変数名のプレフィックスを必要としない他の言語から来た人々によくあるタイプミスです。

于 2012-07-07T05:38:09.277 に答える
0

次のコードを見ると、

`keywords` LIKE '%keyword%'

%keyword%チュートリアルでは、2 つの の間の任意のキーワードに置き換える必要があることを通知しています%。したがって、コードは次のようになります。

<?php

    include 'db.inc.php';

    function search_results($keywords) {
        $returned_results=array();
        $where="";

        $keywords=preg_split('/[\s]+/', $keywords);
        $total_keywords = count($keywords);

        foreach($keywords as $key=>$keyword){
            $where .= "`keywords` LIKE '%$keyword%'"; // Issue fixed.
            if($key != ($total_keywords-1)){
                $where .= " AND ";  
            }
        }  

        echo $where;
    }

?>
于 2012-07-07T05:20:21.877 に答える