[英]Print specified rows mysql & PHP
好吧,這是一個非常新手的問題,但是我找不到合適的問題放在Google或此處。
我有一個很小的表,只有3行,每行都有一個已定義的ID(1、2、3)。
我想做的是打印每個行的數據,但要避免使用循環功能。
即
該查詢將是:
$query = "SELECT field1, field2, field3 FROM table";
$var1 = mysql_query($query);
$var2 = mysql_fetch_assoc($var1);
$var3 = mysql_num_rows($var1);
PHP:
<p><?php echo $var2['field1'];//how can i tell to the code "use the row with this id here -> id=1" ?></p>
<p><?php echo $var2['field1']; // "and use the row with the id "2" here" ?></p>
PS:對不起,我的英語不好,阿根廷人在這里。
好,
這就是為什么我不想循環執行的原因:
我知道我可以這樣:
<?php do { ?>
<p>bla bla <?php echo $var2[field1]; ?> </p>
<?php } while ($var2 = mysql_fetch_assoc($var1)); ?>
但這無法做到這一點,因為網站設計會將這些數據放入具有不同定位和CSS格式的不同div中。
我想以正確的方式做到這一點,避免每行只使用一個查詢。
這些行將永遠為3,並且每個行的ID都將始終相同(1、2、3)。
您可以像這樣使用mysql_field_seek :
$query = "SELECT field1, field2, field3 FROM table";
$query_result = mysql_query($query);
$var1 = mysql_field_seek($query_result,0);
$var2 = mysql_field_seek($query_result,1);
$var3 = mysql_field_seek($query_result,2);
$resutl1 = mysql_fetch_field($var1);
$resutl2 = mysql_fetch_field($var2);
$resutl3 = mysql_fetch_field($var3);
沒有循環就沒有辦法。 但是,為什么要避免循環? 它應該相當簡單,例如:
$query = 'SELECT field1, field2, field3 FROM table';
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))
echo "<p>{$row['field1']}</p>";
mysql_free_result($result);
這是獲取字段名稱和ID的簡單函數。 然后,您可以為所需的任何字段/標識組合調用它。
function getField($fieldName, $id)
{
$sql = sprintf("SELECT `%s` FROM `table` WHERE `id` = %d", $fieldName, $id);
$result = mysql_query($sql);
return mysql_num_rows($result) == 1 ? mysql_result($result, 0, 0) : null;
}
echo getField('field1', 1);
echo getField('field1', 2);
我想不出不使用循環的原因...通常,mysql_fetch_assoc函數從結果資源返回一行數據,然后自動在結果資源中遞增內部行指針。 這將是執行此操作的循環方式:
while ($row = mysql_fetch_assoc($var1)) {
echo $row["field1"];
echo $row["field2"];
echo $row["field3"];
}
mysql_free_result($var1);
但是,您可以這樣做,因為內部行指針會自動遞增。
$row1 = mysql_fetch_assoc($var1);
$row2 = mysql_fetch_assoc($var1);
$row3 = mysql_fetch_assoc($var1);
echo $row1["field1"];
echo $row1["field2"];
echo $row1["field3"];
echo $row2["field1"];
...
從本質上講,無需循環即可獲得相同的效果。 編碼愉快!
這個怎么樣? 這可能為您工作。
$result = mysql_query("SELECT field1, field2, field3 FROM table");
$arr1 = (mysql_fetch_array($result));
$arr2 = (mysql_fetch_array($result));
$arr3 = (mysql_fetch_array($result));
switch ($x)
{
case 1: echo $arr1[0] ." - ".$arr1[1] ." - ".$arr1[2]; break;
case 2: echo $arr2[0] ." - ".$arr2[1] ." - ".$arr2[2]; break;
case 3: echo $arr3[0] ." - ".$arr3[1] ." - ".$arr3[2]; break;
default: echo "Unknown";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.