1

そこで、mysql からいくつかのデータを取得し、それを使用していくつかの条件を作成したいと考えています。これが私のコードですが、mysql からの最後のレコードしか表示されません。

    $result = mysql_query("SELECT * FROM system") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {

$name_system = $row['name'];
$value_system = $row['value'];
}

if($name_system=='website_register' AND $value_system==1)
    $register_system = 1;
    else
    $register_system = 0;

if($name_system=='website_offline' AND $value_system==1)
    $offline_system = 1;
    else
    $offline_system = 0;

次に、別のページで「$offline_system」または「$register_system」をエコーし​​ようとすると、実際のデータが表示されません。

4

4 に答える 4

2

の後に while ループを閉じました$value_system。これは、すべてのレコードが取得され、 and に格納されることを意味します$name_system$value_system、ループによって前の変数が上書きされるため、最後のレコードのみがその変数に格納されます。

これは不完全なコードのようです。できることは、各レコードに対して実行する予定の手順の最後にその閉じ中かっこをさらに移動することです。

$result = mysql_query("SELECT * FROM system") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {

$name_system = $row['name'];
$value_system = $row['value'];
} // you closed the WHILE loop here.

if($name_system=='website_register' AND $value_system==1)
    $register_system = 1;
    else
    $register_system = 0;

if($name_system=='website_offline' AND $value_system==1)
    $offline_system = 1;
    else
    $offline_system = 0;

あなたのコードは次のようなものだと思います:

$result = mysql_query("SELECT * FROM system") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {

$name_system = $row['name'];
$value_system = $row['value'];


if($name_system=='website_register' AND $value_system==1)
    $register_system = 1;
    else
    $register_system = 0;

if($name_system=='website_offline' AND $value_system==1)
    $offline_system = 1;
    else
    $offline_system = 0;

 // my imagination i was talking about:
 if ($offline_system) echo 'The system is offline<br />';
 else echo 'The system is online<br />';
 if ($register_system) echo 'The registration is online<br />';
 else echo 'The registration system is offline';

 } // curly brace MOVED.
于 2012-09-23T12:59:42.647 に答える
0

これをさらに簡単にすることができます。データベースから特定の値を探している場合は、それらを照会してから値を割り当てることができます。

例えば

<?php

$registerResult = mysql_fetch_row(mysql_query("SELECT value FROM system WHERE name = 'website_register'"));
$offlineResult = mysql_fetch_row(mysql_query("SELECT value FROM system WHERE name = 'website_offline'"));

$registerSystem = ($registerResult[0] ? 1 : 0);
$offlineSystem  = ($offlineResult[0] ? 1 : 0);

?>
于 2012-09-23T14:06:01.527 に答える
0

データを複数のページで使用できるようにする場合は、データをどこかに保存する必要があります。データが小さい場合は SESSION SQLITE、大きい場合はフラット ファイル このような状況では、各オプションが使用するメモリと時間を確認し、最も安価なものを選択する必要があります。

于 2012-09-23T13:24:54.417 に答える
0

次のように$_SESSION変数を使用します。$register_system$_SESSION['register_system']$_SESSION['register_system']

の場合も同様で、次のページの$offline_systemよう$_SESSION['offline_system']にアクセスできます。$_SESSION['offline_system']

于 2012-09-23T13:46:27.050 に答える