Db没有连接-php

时间:2017-06-17 12:13:46

标签: php mysqli

我正在尝试从名为categories的数据库中获取表stores数据。在这里,当我运行此代码时,它显示提到的DB错误,即。 Could not select the indicated database。怎么解决?我的数据库名称是正确的,并且在调用函数时$con中也无法访问index.php变量。为什么会这样? 注意:类代码位于MySQL,现在已经过折旧。我试图将其转换为MySQL

的index.php

require_once("ajax_table.class.php");
$obj = new ajax_table();
$records = $obj->getRecords($conn);

的config.php

define ( 'DB_HOST', 'localhost' );
define ( 'DB_USER', 'root' );
define ( 'DB_PASSWORD', '' );
define ( 'DB_DB', 'stores' );

ajax_table.class.php

 class ajax_table {
    private $conn;
  public function __construct(){

    $this->$conn=$this->dbconnect();
  }

  private function dbconnect() {
     $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD,DB_DB)
      or die ("<div style='color:red;'><h3>Could not connect to MySQL server</h3></div>");
      return $conn;
  }

  function getRecords($conn){
    $this->res = mysqli_query($conn,"select * from categories");
    if(mysqli_num_rows($this->res)){
        while($this->row = mysqli_fetch_assoc($this->res)){
            $record = array_map('stripslashes', $this->row);
            $this->records[] = $record; 
        }
        return $this->records;
    }
    //else echo "No records found";
  } 

3 个答案:

答案 0 :(得分:3)

我看不到您已将配置页面包含在数据库类中了?

将此添加到您的数据库类:

<?php require_once("config.php"); ?>

答案 1 :(得分:2)

看起来您有mysqli_select_db切换的参数。查看具有语法的this link,并建议使用第4个参数mysqli_connect来选择数据库。正如Rishi的回答所指出的那样,你实际上已经这样做了,所以你可以完全删除这个电话!

关于$conn变量,您将从dbconnect返回$conn,但不对其执行任何操作。您可能希望在课程中拥有一个属性:

private $conn;

然后在dbconnect做类似的事情:

$this->conn = $this->dbconnect();

$this->conn中使用getRecords代替参数。

有几种方法可以解决这个问题;基本点是,您需要将dbconnect的返回保留在某处,并在需要与数据库通信时可用。

答案 2 :(得分:1)

您无需使用mysqli_select_db,因为您已经在mysqli_connect中选择了数据库。

从代码中删除以下行

mysqli_select_db(DB_DB,$conn)
  or die ("<div style='color:red;'><h3>Could not select the indicated database</h3></div>");