5

解決済みアルファシンからの回答を使用しましたが、情報が多すぎるため、フィールド名を取得するための小さなスクリプトを作成しました。フィールド名が最初に表示されたので、それはかなり単純でした。

  $here = array();
  $SQL = "SHOW COLUMNS FROM User";
    foreach($conn->query($SQL) as $row) {
      $here[] = $row[0];
    }
  echo '<pre>';print_r($here);echo '<pre>';

これにより、列名を含む新しい配列が残りました。これ$hereが将来誰かに役立つことを願っています:)


元の質問:
少し明確にしましょう。mysqlテーブルがあり、そこから*を選択して、結果をhtmlリストに表示しようとしています<ol>。行データをJUSTFINEで取得することはできますが、テーブルの列名をそれぞれ行と一致させるために取得する方法を一生理解することはできません。これは、行データを取得している私のコードです。

//get those results
 $sql = "SELECT DISTINCT *
 FROM User
 WHERE Owner = '".$owner."'";
  foreach($conn->query($sql) as $row) {
  //split array in half
  $hax = count($row);
  $halfHax = $hax / 2;
   //set up a for loop to give results
    $u = 1;
      for($i = 2; $i <= $halfHax; $i++){
        echo $row[$u].'<br>';
        $u++;
      }
   }

これにより、すべての結果がOwner == $owner期待どおりに表示されますが、列名をそれらと一緒にリストしたいので、ハードコーディングすることはできますが、さらに列を追加/変更する可能性があるため、使用したくありません。何か案は?

4

3 に答える 3

3

試す:

SHOW COLUMNS FROM mytable

http://dev.mysql.com/doc/refman/5.0/en/show-columns.html

于 2013-02-04T21:34:18.533 に答える
3

列名を配列キーとして保持するために、行を連想配列としてフェッチします。これが私の提案です:

$sql = "SELECT DISTINCT * FROM User WHERE Owner = :owner";
$sth = $conn->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':owner' => $owner);

while($row=$sth->fetch(PDO::fetch_assoc) as $row) {
  //split array in half
  $hax = count($row);
  $halfHax = $hax / 2;
  //set up a for loop to give results
  foreach ($row as $key => $value) {
    echo $key.'='.$value.'<br />';
  }

}

列名を一覧表示するには:

array_keys($row);
于 2013-02-04T21:41:23.627 に答える
2

列の詳細については、MySQLリファレンスのSHOWCOLUMNSを参照してください。

ただし、mysqli_fetch_assocを使用してから、foreach(array_expression as $ key => $ value)を使用して、各行の列名とその値を取得することをお勧めします。

于 2013-02-04T21:34:27.613 に答える