我正在尝试从名为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";
}
答案 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>");