1

まあ、ここでは非常に初心者の質問ですが、グーグルやここに置くのに適切な質問が見つかりませんでした.

私は非常に小さなテーブルを持っています.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: 私の下手な英語で申し訳ありませんが、アルゼンチン人です。

Ok、

これが、ループとして実行したくなかった理由です。

私はこのようにできることを知っています:

<?php do { ?>

<p>bla bla <?php echo $var2[field1]; ?> </p> 

<?php } while ($var2 = mysql_fetch_assoc($var1)); ?>

しかし、このようにはできません。サイトの設計により、このデータが異なる div に配置され、位置と CSS の書式が異なるためです。

行ごとに1つのクエリを使用することを避けて、正しい方法で行いたいと思います。

行は永遠に 3 になり、各行の ID は常に同じ (1、2、3) になります。

4

5 に答える 5

1

次のように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);
于 2012-08-02T03:03:08.687 に答える
0

ループなしでそれを行う方法はありません。しかし、なぜループを避けたいのでしょうか? たとえば、次のように、かなり単純なはずです。

$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);
于 2012-08-02T02:54:06.383 に答える
0

フィールド名と ID を取得する簡単な関数を次に示します。次に、必要なフィールド/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);
于 2012-08-02T02:57:25.600 に答える
0

ループを使用しない理由が思いつきません... 一般に、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"];
...

これにより、基本的にループなしで同じことが得られます。ハッピーコーディング!

于 2012-08-02T03:07:54.370 に答える
0

これはどう?これはあなたのために働くかもしれません。

$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";
}
于 2012-08-02T03:08:45.950 に答える