-1

私は PDO データ オブジェクトの初心者です。最近、テーブルからデータを取得していました。そして私は予期しない結果に遭遇しました。まだ理解しようとしていますが、今のところ成功していません。

私のテーブル:テスト

a
__
23
76
786
988
234
12
13

私のコード

<?php
try
{
$dbc = new PDO('mysql:host=localhost;dbname=test','root','',array( PDO::ATTR_PERSISTENT => TRUE ));
foreach($dbc->query('SELECT * FROM `test` ') as $row)
{
    print_r($row);
}
$dbc= NULL;
 }
catch( PDOException $e)
{
print "Error !:".  $e->getMessage()."<br>";
die();
}
?>

結果:

Array ( [a] => 23 [0] => 23 ) Array ( [a] => 76 [0] => 76 ) Array ( [a] => 786 [0] => 786 ) Array ( [a] => 988 [0] => 988 ) Array ( [a] => 234 [0] => 234 ) Array ( [a] => 12 [0] => 12 ) Array ( [a] => 13 [0] => 13 )

ここで、配列に2つの要素を取得する理由がわかりません:

[a] => 23列 a の値が 23 であることを意味します

しかし、なぜ私は[0] => 23それと仲良くしていますか?

4

4 に答える 4

2

PDO は連想配列とインデックス付き配列の両方を返すため、これは と呼ばれる標準オプションFETCH_BOTHです。

またはの使用方法については、このページhttp://php.net/manual/en/pdostatement.fetch.phpを参照してください。FETCH_ASSOCFETCH_NUM

于 2013-08-19T09:58:54.637 に答える
0

この方法を試してください

$query = $db->prepare('........);
$query->execute();
while($row = $query->fetch()){
   // rest of code here
}

これは小さな問題ですPDO

于 2013-08-19T10:02:02.613 に答える
0

デフォルトでは、PDO はデータを取得するときに数値 AND 連想配列を取得します。PDO::FETCH_ASSOC2 つのうちの 1 つだけを確実に取得するには、またはを使用してクエリ関数の 2 番目のパラメーターとして指定できますPDO::FETCH_NUMBER

変化する

foreach($dbc->query('SELECT * FROM `test` ') as $row)

の中へ

// Fetch associative
foreach($dbc->query('SELECT * FROM `test` ', PDO::FETCH_ASSOC) as $row)

また

// Fetch numeric
foreach($dbc->query('SELECT * FROM `test` ', PDO::FETCH_NUMBER) as $row)

[編集]
次のようにして、PDO 接続を作成した後にデフォルトのフェッチ モードを設定することもできます。

// Set default fetch mode to PDO::FETCH_ASSOC
$dbc->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

それをするときは、

foreach($dbc->query('SELECT * FROM `test` ')

とまったく同じことをします

foreach($dbc->query('SELECT * FROM `test` ', PDO::FETCH_ASSOC) as $row)

これが役に立ったことを願っています。

于 2013-08-19T10:00:18.860 に答える
0

連想配列を取得します。あなたはこのようにすることができます

foreach($dbc->query('SELECT * FROM `test` ', PDO::FETCH_ASSOC) as $row)

そうでなければ

$dbc->query('SELECT * FROM `test` ')->fetch(PDO::FETCH_ASSOC);
于 2013-08-19T10:04:56.487 に答える