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

您已经对结果集进行了一次迭代,这会导致指针前进到它的末尾。

在一个循环中完成所有工作,或者将整个结果集提取到一个数组中,然后迭代两次。

除此之外,您不应该在新代码中使用mysql_*函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-01-06T20:52:00.437 回答
0

解决此问题的另一种方法是使用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 回答