1

ここで他の人のコードを編集しているため、呼び出されたデータベースのフィールドをtitle変更したり、MySQLi などに変更したりすることはできません:/

コードは問題なく DB に接続しますが、結果は常にゼロになります。

$strSQL = "SELECT * FROM newproducts WHERE 'title' LIKE ('%$q%')";
$sql = mysql_query($strSQL) or die(mysql_error());
$num_rows = mysql_num_rows($sql);

if ( $q == '' ) {
    echo '<p class="black-text">Please provide a search term.</p>';
}

else if ( $num_rows <= 0 ) {
    echo '<p class="black-text">Your search for <b>'.$q.'</b> returned <b>0</b> results.</p>';
}

else { 

    echo '<p class="black-text">Your search for <b>'.$q.'</b> returned <b>'.$num_rows.'</b> result(s).<br/><br/>';  
    while($row = mysql_fetch_assoc($sql)) {
        echo '- '.$row['title'].' <a href="'.$row['link'].'.html" class="search-link">[Read more]</a><br/>';
    }
    echo '</p>';
}

それはケースの問題でしょうか?上下の文字列を検索してみましたが、まだ結果はありません。

4

1 に答える 1

6

MySQL では、一重引用符は文字列を示します。

SELECT * FROM newproducts WHERE 'title' LIKE ('%$q%')

する必要があります

SELECT * FROM newproducts WHERE title LIKE ('%$q%')

さらに、クエリを実行した後にテストしif ($q == '')ています-前に実行したい場合があります-しかし、それは問題の原因ではありません.

最後に、安全でない可能性のあるユーザー入力を使用することで、SQL インジェクションのリスクがありますが、質問とは直接関係がないため、詳しくは説明しません。最近のほとんどの PHP 開発者は、クエリをより安全にするために準備済みステートメントを使用しています (また、クエリを実行する古いスタイルは非推奨になるため)。

于 2012-11-07T15:01:26.643 に答える