• 締切済み

classについて

$server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } 上記と同じことを下記のようなクラスにして db.php class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $rs = mysql_query ($sql); return mysql_fetch_array ($rs, MYSQL_ASSOC); } hoge.php $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($db->query($sql)) { echo $result[hoge]; } のようにしたのですが、うまくいきません。 function query($sql){ $rs = mysql_query ($sql); $result = mysql_fetch_array ($rs, MYSQL_ASSOC); } とすると一行はとれるのですが、複数行とるにはどうしたらいいのでしょうか・・・ どうかよろしくお願いします。

みんなの回答

  • kalze
  • ベストアンサー率47% (522/1092)
回答No.2

よーく見直してみましょう >while ($db->query($sql)) { >echo $result[hoge]; >} この$resultはどこからきたものですか? $resultはどこにも定義or初期化されていませんから、$result[hoge]は常に空ですね >function query($sql){ >$rs = mysql_query ($sql); >return mysql_fetch_array ($rs, MYSQL_ASSOC); >} $sqlで渡されたSQL文を実行し、リソースを$rsに取得する 結果の1行目を連想配列にして返す 例としてですが、 function query($sql){ $rs = mysql_query ($sql); } function get_array(){ return mysql_fetch_array($rs,MYSQL_ASSOC); } とclassに宣言しておいて、 $sql = "SELECT * FROM `table` "; $db->query($sql); while($result = $db->get_array()){ echo $result['hoge']; } とか 1行はとれるのですがと書かれているqueryメソッドでは、呼び出すごとにSQL実行して、その結果リソースの1つ目を返しますから、1行しかとれませんね 上記と同じようなことをと最初に書かれているソースもクエリを実行する文が抜けています。 $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; $rs = mysql_query ($sql); while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } ですね class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $this->rs = mysql_query ($sql); } function get_result(){ return mysql_fetch_array ($this->rs, MYSQL_ASSOC); } $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; $db->query($sql); while ($result = $db->get_result()) { echo $result[hoge]; }

回答No.1

while ($result = $db->query($sql)) { echo $result[hoge]; } にしてみるとどうでしょうか?

関連するQ&A