ホームページ > バックエンド開発 > PHPチュートリアル > MYSQLIを使用してデータベースを読み取る際の問題が読み取れない

MYSQLIを使用してデータベースを読み取る際の問題が読み取れない

WBOY
リリース: 2016-06-23 13:49:35
オリジナル
1097 人が閲覧しました

<?php  $DB_HOST = "";  $DB_USER = "";  $DB_PASSWORD = "";  $DB_DATABASE = "";      define("DB_HOST", "localhost");  define("DB_USER", "root");  define("DB_PASSWORD", "1234");    define("DB_DATABASE", "t6_db_hp");class mysqldb  {    var $host = DB_HOST;                   //localhost    var $user = DB_USER;                   //root    var $pass = DB_PASSWORD;               //1234    var $database = DB_DATABASE;           //t6_db_hp    var $conn;    var $sql;    var $n = 0;    var $m = 0;    var $result = "";    var $debug = false;    var $err = "";function mysqldb($host="", $user="", $pass="", $database="")	{      if ($host != "") $this -> host = $host;      if ($user != "") $this -> user = $user;      if ($pass != "") $this -> pass = $pass;      if ($database != "") $this -> database = $database;	       if (!$this -> conn = @mysqli_connect($this -> host, $this -> user, $this -> pass))	  {        return $this -> output("连接数据库 '".$this -> host."' 失败。".mysqli_error($this -> conn));      }	   mysqli_query($this -> conn,"SET NAMES 'utf8'");       $this -> selectdb();    }function selectdb($database="")	{      if ($database != "" && $database != $this -> database)        $this -> database = $database;      if (!mysqli_select_db($this -> conn, $this -> database))	  {        return $this -> output("无法使用数据库 '".$this -> database."'。");      }	}function query($sql="", $database="")                     //$sql	{      if ($sql != "") $this -> sql = $sql;      if ($database != "" && $database != $this -> database)	  {        $olddb = $this -> database;        $this -> selectdb($database);      }      $this -> result = @mysqli_query($this -> conn,$this -> sql);      if (mysqli_error($this -> conn) != "")	  {        return $this -> output("执行以下SQL语句时失败:'".$this -> sql."' <br><br>".mysqli_error($this -> conn));      }      $this -> n = @mysqli_affected_rows($this -> conn);                         if (!empty($olddb)) $this -> selectdb($olddb);                     return $this -> result;			}function get_data()	{   /*   if(!$this -> result || !preg_match("/^Resource/i", $this -> result)){    */                if(!$this -> result || !is_resource($this->result)){             return $this->output("没有数据,请先执行SQL的'select'语句!");      }      $count=0;      $this -> m = @mysqli_num_rows($this -> result);      if ($this -> m > 0)	  {        while ($row = mysqli_fetch_array($this -> result))		{          $data[$count] = $row;          $count++;        }        return $this->result=$data;      }	  else	  {        return $this -> output("数据为空!");      }      mysqli_free_result($this -> result);	}function output($msg){  $this->err=$msg;  if ($this->debug)echo $msg;  return false;}  }?><?php /*?>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<?php */?><?php$db = new mysqldb();if($db){	echo "链接数据库 1";	echo "<br/>";	echo "<br/>";	} $sql = "SELECT * FROM t6_dept where de_id>'0' ORDER BY de_id ASC"; $db -> query($sql); $result = $db -> get_data(); if(!$result)       {	echo "取出数据失败result 0";	echo "<br/>";	echo "<br/>";	}echo $result[0]["de_name"];          //无法显示数据print_r($db);?>
ログイン後にコピー


最後に、$resul には値がありません。ブラウザには次のような結果が表示されます。 ? ? データベース リンク データベース 1






mysqldb object ([host] = & gt; localhost [user] = & gt; root [pass] = & gt; 1234 [database] = & gt; t6_db_hh p [conn] = & gt ; mysqli オブジェクト ( [affected_rows] => 4 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: f373ea5dd5538761406a8022a4b8a374418b240e $ [client_version] => 50011 [connect_errno] => ; 0 [接続エラー] => [エラーリスト] => 4 [ホスト情報] => ] => [挿入_id] => 0 [サーバー情報] => 50620 [統計] => 稼働時間: 1 質問: 5 オープン数: 68テーブル: 1 オープンテーブル: 61 クエリ/秒 平均: 0.000 [sqlstate] => [protocol_version] => 1 [warning_count] => SELECT * FROM t6_dept where de_id>'0 ' ORDER BY de_id ASC [n] => 4 [m] => 0 [結果] => mysqli_result オブジェクト ( [current_field] => 0 [field_count] => 4 [ length] => [num_rows ] => 4 [type] => 0 ) [debug] => [err] => 最初に SQL 'select' ステートメントを実行してください。

ディスカッションに返信 (解決策)

mysqli_query($this -> conn,$this -> sql) は、リソース (リソース) ではなく、mysqli_result オブジェクトを返します

つまり、 !is_resource($this->result)が確立され、プログラムは早期に終了します


mysqli_query($this -> conn,$this -> sql) は、リソース (リソース) ではなく、mysqli_result オブジェクトを返します
したがって、 !is_resource($this->result)が確立され、プログラムが早期に終了します

変更するにはどうすればよいですか? ? ?

if(!$this ->result || !is_object($this->result)){

; }


if(!$this -> result || !is_object($this-> result)){ using using ' using 'select' using ' を使用して SQL の 'select' ステートメントを最初に実行します。 ;
}



何日も悩まされていた問題がついに解決しました、ありがとうモデレーター
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート