Php while($row=mysql\u fetch\u row($result))
我正在尝试使用php从mysql数据库中提取所有记录,并将其格式化显示。由于某些原因,第一条记录显示正确,但直接显示在其下方的第二条记录不显示字段名。我做错了什么Php while($row=mysql\u fetch\u row($result)),php,mysql,Php,Mysql,我正在尝试使用php从mysql数据库中提取所有记录,并将其格式化显示。由于某些原因,第一条记录显示正确,但直接显示在其下方的第二条记录不显示字段名。我做错了什么 <?php $db_host = 'localhost'; $db_user = 'root'; $db_pwd = '***'; $database = 'db'; $table = 'upstable'; if (!mysql_c
<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pwd = '***';
$database = 'db';
$table = 'upstable';
if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");
if (!mysql_select_db($database))
die("Can't select database");
$result = mysql_query("SELECT * FROM {$table}"); // sending query
if (!$result) {
die("Query to show fields from table failed");
}
$fields_num = mysql_num_fields($result);
while($row = mysql_fetch_row($result)) // printing table rows
{
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[0]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[1]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[2]v</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[3]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[4]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[5]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[6]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[7]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</div></b><div id='column2'>$row[8]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[9]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[10]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[11]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[12]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[13]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[14]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[15]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column2'><b>{$field->name}:</b></div><div id='column2'>$row[16]</div><br>";
$field = mysql_fetch_field($result);
echo "<div id='column'><b>{$field->name}:</b></div><div id='column'>$row[17]</div><br><br><br>";
$row = 0;
}
mysql_free_result($result);
?>
您只获取第一行(因为$results的默认位置是[0],这是第一行)
显然,您不了解使用php获取排序和显示数据所涉及的过程,但下面是一个使用mysqli
的准备语句和普通查询的示例
mysqli查询
function getmarkets()
{
global $mysqli;
$query = $mysqli->query("SELECT pair, last_price FROM all_currency_data");
$num_rows = $query->num_rows;
if($num_rows > 0) {
while($row = $query->fetch_assoc())
{
$mkt = explode("-",$row["pair"]);
$coin = $mkt[0];
$base = $mkt[1];
echo '<a class="animate" href="?p=trade&market='.urlencode($row["pair"]).'" style="text-decoration: none;"><li class="mkt-normal" id="'.$row["pair"].'_div">'.$coin.'/'.$base.' <span class="price" id="'.$row["pair"].'_price">'.$row["last_price"].'</span></li></a>';
}
$query->close();
}
}
函数getmarkets()
{
全球$mysqli;
$query=$mysqli->query(“从所有货币数据中选择对、最后一个价格”);
$num\u rows=$query->num\u rows;
如果($num_rows>0){
而($row=$query->fetch\u assoc())
{
$mkt=explode(“-”,$row[“pair”]);
$coin=$mkt[0];
$base=$mkt[1];
回声';
}
$query->close();
}
}
准备好的声明
$stmt = $mysqli->prepare("SELECT user,message,timestamp FROM uc_support_replies WHERE tickethash = ? ORDER BY timestamp ASC");
$stmt->bind_param('s',$ticket);
$stmt->execute();
$stmt->bind_result($user,$message,$timestamp);
while($stmt->fetch())
{
if(in_array($user, $admins)) {
$color = '0404B4';
}else{
$color = '2E2E2E';
}
$output .=
'
<div class="msgdiv">
<hr class="five">
<span class="user_name" style="color:#'.$color.'"><u>'.$user.'</u></span>
</br>
<span class="user_message">'.$message.'</span>
</br>
<span data-livestamp="'.$timestamp.'">'.$timestamp.'</span>
<hr class="five">
</div>
';
}
$stmt=$mysqli->prepare(“从uc_支持_回复中选择用户、消息、时间戳,其中tickethash=?按时间戳排序ASC”);
$stmt->bind_参数('s',$ticket);
$stmt->execute();
$stmt->bind_result($user、$message、$timestamp);
而($stmt->fetch())
{
if(在数组中($user$admins)){
$color='0404B4';
}否则{
$color='2e';
}
$output=
'
“.$user。”
“.$message”
“.$timestamp。”
';
}
MySQL扩展自2012年底PHP 5.5.0以来就被正式弃用,将来将被删除。由于PHP5和更高版本,推荐的替代方案是MySQLi(“i”代表“改进”) 下面的代码应该可以很好地工作,并且更易于阅读
while($row = mysql_fetch_assoc($result))
{
foreach ($row as $col_name => $col_val)
{
echo "<div id='column2'><b>{$col_name}:</b></div><div id='column2'>$col_val</div><br>";
}
}
while($row=mysql\u fetch\u assoc($result))
{
foreach($col\u name=>$col\u val的行)
{
回声“{$colu_name}:$col_val
”;
}
}
更新
嗯,我不擅长HTML/CSS。如果我是你,我会喜欢这个
$row_num = 0;
$css_classes[0] = 'gray_style';
$css_classes[1] = 'white_style';
while($row = mysql_fetch_assoc($result))
{
$row_num++;
$class = $css_classes[$row_num % 2];
foreach ($row as $col_name => $col_val)
{
echo "<div id='column2' class='$class'><b>{$col_name}:</b></div><div id='column2'>$col_val</div><br>";
}
}
$row\u num=0;
$css_classes[0]=“灰色样式”;
$css_classes[1]=“白色_风格”;
while($row=mysql\u fetch\u assoc($result))
{
$row_num++;
$class=$css_classes[$row_num%2];
foreach($col\u name=>$col\u val的行)
{
回声“{$colu_name}:$col_val
”;
}
}
unrelated,但您不能两次使用同一ID小心不要多次使用同一ID-使用class Instedi通常不会进行下一次投票,但您必须从mysql_*函数开始!它是2014You better use,更易于处理,最好看看红色框,并改为PDO或mysqli等现代API。感谢所有建议。我将用id交换类并切换到mysqli。不过,如果没有这些麻烦,2014年就可以了。这并不能回答问题。你是个英雄。我会投票支持这一点,但我还没有足够的声望点(很明显,我在这方面是新手)。谢谢。不要鼓励使用mysql.*
。这解决不了任何问题。@InoSHeo不仅解决了这个问题,而且在一段时间内就有了foreach循环loop@r3wt看,OP想要打印所选表格的所有列。您的mysqli版本打印所有列?@r3wt在您的回答中,“您只获取第一行”=>否,OP已从resultset获取所有行。他的问题是他试图在while()
循环中获取字段。
$row_num = 0;
$css_classes[0] = 'gray_style';
$css_classes[1] = 'white_style';
while($row = mysql_fetch_assoc($result))
{
$row_num++;
$class = $css_classes[$row_num % 2];
foreach ($row as $col_name => $col_val)
{
echo "<div id='column2' class='$class'><b>{$col_name}:</b></div><div id='column2'>$col_val</div><br>";
}
}