我正在尝试让一个php从mysql数据库中提取所有记录,并将它们格式化显示。由于某些原因,第一条记录显示正确,但在其正下方显示的第二条记录没有显示字段名。我做错了什么?
<?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);
?>更新:
差不多修好了,但不太对劲。它使每个完整的数据集合的背景交替( "column2“类是灰色的,"columnn”是白色的),而不是每个集合中的每隔一行。这更有意义吗?
这就是我现在正在使用的,我应该改变什么?
$row_num = 0;
$css_classes[0] = 'column2';
$css_classes[1] = 'column';
while($row = mysql_fetch_assoc($result))
{
$row_num++;
$class = $css_classes[$row_num % 2];
foreach ($row as $col_name => $col_val)
{
echo "<div class='$class'><b>{$col_name}:</b></div><div class='$class'>$col_val</div><br>";
}
echo "<br><br>";发布于 2014-05-29 09:51:26
下面的代码应该可以完美地工作,并且有更多的可靠性。
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>";
}
}已更新
嗯,我不擅长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>";
}
}发布于 2014-05-29 04:05:35
您只获取第一行(因为$results的默认位置是,这是第一行)。
您显然不了解使用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();
}
}预准备语句
$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>
';
}发布于 2014-05-29 08:30:25
自2012年末PHP5.5.0起,MySQL扩展被正式弃用,并将在未来被删除。推荐的替代方案是MySQLi ("i“代表”改进的“),因为PHP5和更高版本。http://www.php.net/manual/en/book.mysqli.php
https://stackoverflow.com/questions/23920560
复制相似问题