簡體   English   中英

打印指定的行mysql&PHP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM