MySQLのテーブルのコラム名の取得方法
MySQLのテーブルを一つのオブジェクトと考えるようなクラスを作ろうとしています。
このクラスの中で、テーブルの各コラム(またはフィールド名)を要素にした配列を作りたいのですが、やり方がわかりません。
自分がある程度調べてみたところでは、MySQLシェルの中では、次のように入力すると添付した画面のようにコラム名の一覧が表示がされるのですが
これらのコラム名をPHPスクリプト内にある配列に格納出来ません。
mysql> SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="transaction";
まだ作成の途中ですが、自分のスクリプトは以下に掲載したようなものです
// columnList initialize というブロックが該当部分です。ほかの部分はとりあえず働いてます。
どなたかお知恵を貸していただけないでしょうか。お願いいたします。
<?php
class Table{
private $DBname;
private $tableName;
private $columnList=array();
private $dataArray=array(array());
private $totalRecords;
//===================================================
public function __construct($database, $tablename)
//===================================================
{
$this->DBname=$database;
$this->tableName=$tablename;
$cxn=mysqli_connect("localhost","root","rsi2018","$database") or die("cannot connect to database");
// $columnList initialize
$query="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=\"$tablename\"";
$result=mysqli_query($cxn, $query) or die("query failed :1");
$row=mysqli_fetch_array($result);
foreach($row as $col){
$this->columnList[]=$col;
}
// $totalRecords initialize
$query="select count(*) as count from $tablename";
$result=mysqli_query($cxn, $query) or die("query failed :3");
$row=mysqli_fetch_array($result);
$this->totalRecords=$row["count"];
// $dataArray initialize
for($i=0; $i < $this->totalRecords; $i++){
$query="select * from $tablename where id=($i+1)";
$result=mysqli_query($cxn, $query) or die("query failed :2");
$this->dataArray[$i]=mysqli_fetch_assoc($result);
}
}// end constructor
//===================================================
public function showPart($id)
//===================================================
{
$data=$this->dataArray[$id - 1];
/*
foreach($data as $key=>$value){
echo "$key = $value</br>";
}
*/
echo "ID: ".$data['id']."</br>";
echo "partNumber: ".$data['partNumber']."</br>";
echo "partName: ".$data['partName']."</br>";
echo "simpleName: ".$data['simpleName']."</br>";
echo "stock: ".$data['stock']."</br>";
echo "location: ".$data['location']."</br>";
}// end function
//===================================================
public function getTotalRecords()
//===================================================
{
return $this->totalRecords;
}// end function
//===================================================
public function showColumnList()
//===================================================
{
foreach($this->columnList as $field){
echo "$field ";
}
echo "</br>";
}// end function
}// end class
?>
お礼
ありがとうございました出来ました、単純なとこでつまづいていました。
補足
お返事ありがとうございます。 while ($row = mysql_fetch_array($sudeniaru, MYSQL_ASSOC)) { if ($row== $userid){ echo"OK"; }else{ } } whileでループして・・・ その後どうすればいいでしょうか、そもそもwhileで回しても 配列で受け取れるのでしょうか。