0

つまり、基本的に私がやろうとしているのは、検索ヒットをページに表示することです。以下のページに投稿するフォームを設定しました。このデータは MySQL データベースで検索され、結果は次の形式で表示されます。



名前
プロフィール 画像 パス
年齢



インターネットで広範囲に検索したところ、以前は foreach ループを使用していたので、while ループを使用する必要があることがわかりました。

しかし、何かを検索するたびに、Apache サーバーがクラッシュします。以前はクラッシュしなかったため、while ループが原因である可能性があると思いますが、データベースで見つかった行の量に応じて、同じ結果セット (名前、画像、および年齢) を一定回数だけ表示します。 .

検索ページのコードは次のとおりです。

require_once "lib/mysql.php";

if (isset($_POST[検索]) && !empty($_POST[検索])){

$search = $_POST[search];

// The mysql class used for functions.

$mysql = new mysqlHandle;

// Opens access to the mysql server.

$mysql->accessOpen('root', '', 'Portfolio', 'localhost');

// Sets $rows to number of entries (rows) with the 'Name' value of $search.

$rows = $mysql->tableCheckNum('*', stats, Name, $search, Portfolio);

echo "<div id='content'>
    <div id='content_main'>
        <h2>Search Results for '$search'</h2>
        <br/><hr/><br/>";

// Makes sure that there's at least 1 search hit.

if ($rows>0){

    // Sets the current hit number. (the first one is 1, the second is 2 et.c)

    $num = 1;

    $user = array();

    // My mysql function for checking the order of entries, see the attached myqsl code.

    while ($result = $mysql->tableCheckOrder('*', stats, Name, $search, ID, DESC, Portfolio)){

        // The $user array should hold the user's (searched for) details.

        $user[] = $result;

        foreach ($user as $result){

        // Makes sure that we haven't exceeded the number of rows.

            if ($num<=$rows){

            // Adds one to the number of displayed rows, as we have dsplayed another.

                $num++;

            // Prints the user's (searched for) details.

                print_r ($user[Name]."<br/>");
                print_r ($user[Image]."<br/>");
                print_r ($user[Age]."<br/>"."<br/>"."<hr/>"."<br/>");

            }

        }               
    }

}else{

    echo "No users found";

}

echo '</div>
    </div>';

}

該当する MySQL コードは次のとおりです。

// Gets order of entries (rows) The indentations under "function tableCheckOrder" isn't showing up btw.
    function tableCheckOrder($span, $table, $column, $value, $order, $mode, $base){

    mysql_select_db($base);

    $this->query11="SELECT $span FROM $table WHERE $column = '$value' ORDER BY $order $mode";
    $this->result11=mysql_query($this->query11) or die("<br/>"."Invalid $table CHECK ORDER query: " .mysql_error());

    return mysql_fetch_array($this->result11, $result_type = MYSQL_BOTH);

}

// This function checks amount of rows in table.

function tableCheckNum($span, $table, $column, $value, $base){

    mysql_select_db($base);

    $this->query="SELECT $span FROM $table WHERE $column = '$value'";
    $this->result=mysql_query($this->query) or die("Invalid $table CHECK NUM query: " .mysql_error());

    return mysql_num_rows($this->result);

}

これが私の「統計」テーブル構造の写真です。

私の「統計」テーブル構造

クラッシュせずに検索結果を表示できるようにしたい

もっと情報を提供できる場合は、質問してください。

前もって感謝します!

4

0 に答える 0