-2

以下のコードで問題が発生していると思われます。発生する問題は

「注意:未定義の変数:21行目のC:\ wamp \ www \ search\search.phpのi」

「警告:mysql_num_rows()は、パラメーター1がリソースであると想定しています。ブール値はC:\ wamp \ www \ search\search.phpの34行目にあります」。

21行目は$i++;

34行目は$num_rows = mysql_num_rows($query)

<body>
    <h2>Search Engine</h2>
    <form action='./search.php' method='get'>
        <input type='text' name='k' size='50' value='<?php echo $_GET['k'] ?>' />
        <input type='submit' value='Search'/>
    </form>
    <hr />
    <?php
    $k = $_GET['k'];
    $terms = explode(" ", $k);
    $query = "SELECT * FROM search WHERE ";

    foreach ($terms as $each){
        $i++;

        if($i == 1)
            $query .= "keywords LIKE '%$each%' ";
        else
            $query .= "OR keywords LIKE '%$each%' ";
    }

    //connect
    mysql_connect("localhost", "root", "password");
    mysql_select_db("search");

    $query = mysql_query($query);
    $num_rows = mysql_num_rows($query);

    if ($num_rows > 0){

        while($row = mysql_fetch_assoc($query)){
            $id = $row['id'];
            $title = $row['title'];
            $description = $row['description'];
            $keywords = $row['Keywords'];
            $link = $row['link'];

            echo "<h2><a href='$link'>$title</a></h2>
            $description<br /><br />";
        }

    }
    else
        echo "No results found for \"<b>$k</b>\"";

    //disconnect
    mysql_close();

    ?>
</body>

誰かがそれを修正する方法を知っていますか?

4

2 に答える 2

0

まだ割り当てられていない変数をインクリメントしているだけです

$i = 1;
foreach ($terms as $each){
        $i++;

        if($i == 1)
            $query .= "keywords LIKE '%$each%' ";
        else
            $query .= "OR keywords LIKE '%$each%' ";
    }

または単に行う

foreach ($terms as $each){
        $selects[] = "keywords LIKE '%$each%' ";

}
$query .= implode(" OR ",$selects);

これも警告の理由になると思いmysql_num_rows()ます

于 2012-12-22T09:52:27.933 に答える
0

エラー1: forループの使用:

foreach ($terms as $each)
{
    //....
}

また

for($i = 0; i < count($terms); i++)
{
    $each = $terms[i];
    //....
}

$i++はforeachでは役に立たない

エラー2: ユーザーがクエリによって参照されるテーブルにアクセスする権限を持っていない場合、mysql_query()は失敗し、FALSEを返します。これを修正するためのサンプルコードは次のとおりです。

$num_rows = 0;
if($query){
    $num_rows = mysql_num_rows($query);
}
于 2012-12-22T09:56:55.150 に答える