无法让mysql_fetch_rows合作

时间:2013-01-06 20:48:17

标签: php mysql sql html-table

我正在尝试根据用户输入的变量从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>";

2 个答案:

答案 0 :(得分:4)

你已经在结果集中迭代一次,这会导致指针前进到它的结尾。

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

除此之外,你shouldn't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

答案 1 :(得分: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))