1

テーブルからすべての行を取得したい select ステートメントがありますが、精神的な障害があるようです。これは基本的なものである必要がありますが、機能していないようです。

テーブル「postage_price」には 2 つの行と 2 つの列しかありません。参照

Select ステートメントは次のとおりです。

$get_postage="SELECT price FROM postage_price ORDER BY ref DESC";
$get_postage_result=mysqli_query($dbc, $get_postage) or die("Could not get postage");
while($post_row=mysqli_fetch_array($dbc, $get_postage_result))
{
$post1[]=$post_row;
}

次に、結果をエコーアウトしようとしています:

echo $post1['0'];
echo $post1['1'];

これは何も表示されていません。頭痛も治りません。

4

5 に答える 5

1

あなたは$post1[]=$post_row;それ$post_row自体が配列です。したがって、次の方法で投稿データにアクセスできます。$post1[NUMBER][0]ここNUMBERで、 は $post1 配列のインデックスであり、[0]は mysqli_fetch_array によって返される $post_row の 0-index です。

$post1[]=$post_row[0];おそらく、配列の配列を避けるためにコードで使用したかったでしょう。

于 2012-11-04T11:33:01.380 に答える
1
while($post_row = mysqli_fetch_array($dbc, $get_postage_result))
{
    $post1[] = $post_row['price'];
}

ご覧のとおり:$post_rowこの行では:= mysqli_fetch_array($dbc, $get_postage_result)は配列です。配列値全体をブロック内の別の配列に保存しようとしています。:)

編集

while($post_row = mysqli_fetch_array($get_postage_result))
...
于 2012-11-04T11:47:12.373 に答える
0

PHP スクリプトで何かがうまくいかない場合、まずできることは、知識を増やすことです。あなたはそれを書いた

echo $post1['0'];
echo $post1['1'];

何も示していません。NULLこれは、これらの値が、FALSEまたは空の文字列である場合にのみ当てはまります。

$post1したがって、次のステップは、最初に調べることです

var_dump($post1);

変数をダンプすることによって。

もう 1 つの手順は、スクリプトの最上位レベルでエラー表示とレポートを有効にして、潜在的な問題がどこにあるかを把握することです。

ini_set('display_errors', 1); error_reporting(~0);

また、PHP 5.4 を使用することもできます (最初の部分は古い現在の PHP 5.3 でも動作しますが、foreach動作しませんが、動作するものを返すことができquery()ます)。次のように、スクリプトを少し単純化します。

class MyDB extends mysqli
{
    private $throwOnError = true; # That is the die() style you do.

    public function query($query, $resultmode = MYSQLI_STORE_RESULT) {
        $result = parent::query($query, $resultmode);
        if (!$result && $this->throwOnError) {
            throw new RuntimeException(sprintf('Query "%s" failed: (#%d) %s', $query, $this->errno, $this->error));
        }
        return $result;
    }
}

$connection = new MyDB('localhost', 'testuser', 'test', 'test');
$query      = 'SELECT `option` FROM config';
$result     = $connection->query($query);
foreach ($result as $row) {
    var_dump($row);
}
于 2012-11-04T11:48:23.327 に答える
0

1 と 0 を文字列インデックスとして渡しています。これは、データベースに 0 または 1 という列がある場合にのみ機能します。それらを数値インデックスとして渡す必要があります。

試す:

print_r($post1[0]);
print_r($post1[1]);

また

print_r($post['price']);
print_r($post['ref']);
于 2012-11-04T11:28:29.487 に答える
0

あなたの助けを借りて、私はエラーを見つけました - それは、必要のない $dbc があった mysqli_fetch_array にあります。

$get_postage="SELECT price FROM postage_price ORDER BY ref DESC";
$get_postage_result=mysqli_query($dbc, $get_postage) or die("Could not get postage");
while($post_row=mysqli_fetch_array($get_postage_result))
{
$post1[]=$post_row['price'];
}

それ以外の:

$get_postage="SELECT price FROM postage_price ORDER BY ref DESC";
$get_postage_result=mysqli_query($dbc, $get_postage) or die("Could not get postage");
while($post_row=mysqli_fetch_array($dbc, $get_postage_result))
{
$post1[]=$post_row['price'];
}

私にとって悪い日:(

皆さんありがとう

于 2012-11-04T11:54:17.733 に答える