1

こんにちは、php の別の問題です。なぜ機能しないのかわかりませんが、コードは次のとおりです。

        <?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%'";
    if ($key != ($total_keywords - 1 )){
        $where .= " AND ";
    }
}

$results = "SELECT `document_name` ,LEFT(`first_paragraph`,70) as `first_paragraph` FROM `documents` WHERE $where ";
$results_num = ($results = mysql_query($results)) ? mysql_num_rows($results) : 0 ;
if ($results_num == 0){
    return false;
}else {

    while($results_row = mysql_fetch_assoc($results)){
    $returned_results[] = array(
                'title' => $results_row['document_name'],
                'description' => $results_row['first_paragraph']
    );
}

return $returned_results;


}
}

?>   

現時点では PDO で作成しようとしていますが、方法がわかりません。それが問題かどうかはわかりませんが、mysql Thx からは何も得られません。

4

1 に答える 1

2

現在、WHERE条件全体を一重引用符で囲まないでください。次のようなことを行っています。

SELECT document_name ,LEFT(first_paragraph,70) as first_paragraph FROM documents WHERE '`keywords` LIKE '%keyword%''

次のようになります。

SELECT document_name ,LEFT(first_paragraph,70) as first_paragraph FROM documents WHERE `keywords` LIKE '%keyword%'

基本的なデバッグを行うことで、これを簡単に見つけることができます。

  • データベースエラーをキャプチャしてログに記録するコードを常に記述します(そのようなコードはありません)
  • データベースエラーで目的がわからない場合は、実行しようとしているクエリをログに記録し、データベースで直接実行してみてください。

最後に、ここにはPDOがまったく表示mysql_*されません。非推奨であり、使用すべきではないファンクトインを使用しています。

于 2012-12-26T17:40:48.137 に答える