我正在尝试根据用户输入的变量从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>";
答案 0 :(得分:4)
你已经在结果集中迭代一次,这会导致指针前进到它的结尾。
在一个循环中完成所有工作,或者将整个结果集提取到一个数组中,然后迭代两次。
除此之外,你shouldn't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - 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))