3

ユーザーが入力した変数に基づいて、mysql テーブルから行を取得しようとしています。基本的に、「bob dilan」の $fname と $lname を検索したい場合、これが行われるすべての行を検索して表示します。$mysql_num_fields が完全に機能しているため、ユーザーへの接続は問題ありません。現在、mysql_fetch_rows while ループ内では何も動作せず、エコーもありませんが、エラーはありません。= の代わりに like 演算子を使用してみましたが、役に立ちませんでした。

PHP

$sql = "SELECT * FROM  ".$tbl_name." 
WHERE fname='".$fname."' 
and lname='".$lname."' 
and city='".$city."'
and phone='".$pohne."'
and interest_inet='".$internet."'
and interest_tv='".$television."'
and interest_voice='".$voice."'
and submission_ip='".$ip."'
and inquiry_handled='".$handled."'";
$result = mysql_query($sql);

echo "<table border='1'>";
echo "<tr>";
$i = 0;

while ($i < mysql_num_fields($result))
{
    $meta = mysql_fetch_field($result, $i);   
    echo "<th>".$meta->name."</th>";
    $i++;
}

while ($row = mysql_fetch_row($result))
{
    echo '<tr>';

foreach($row as $item)
{
    echo "<td>".$item."</td>";
}

echo '</tr>';
echo $row;
}

echo "</table>";
4

2 に答える 2

4

すでに結果セットを 1 回反復処理しているため、ポインターが最後まで進みます。

単一のループですべての作業を完了するか、結果セット全体を配列にフェッチして、それを 2 回繰り返します。

それ以外では、 new code で関数を使用しないmysql_*でください。それらはもはや保守されておらず、公式に非推奨です赤いボックスが見えますか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-01-06T20:52:00.437 に答える
0

この問題を解決するもう1つの方法は、mysql_data_seekを使用することです。

while ($i < mysql_num_fields($result))
{
    $meta = mysql_fetch_field($result, $i);   
    echo "<th>".$meta->name."</th>";
    $i++;
}

mysql_data_seek($result);

while ($row = mysql_fetch_row($result))
于 2013-01-06T21:04:19.987 に答える