我正在编写一个类和一些函数来连接数据库并从表中检索信息.我浏览过以前有类似标题的帖子,但大多数都是使用mysql函数编写的,我使用的是mysqli函数.
我希望有人可以通过这个简单的脚本让我知道我在哪里弄错了.
这是我的class.connect.php:
class mySQL{
var $host;
var $username;
var $password;
var $database;
public $dbc;
public function connect($set_host, $set_username, $set_password, $set_database)
{
$this->host = $set_host;
$this->username = $set_username;
$this->password = $set_password;
$this->database = $set_database;
$this->dbc = mysqli_connect($this->host, $this->username, $this->password, $this->database) or die('Error connecting to DB');
}
public function query($sql)
{
return mysqli_query($this->dbc, $sql) or die('Error querying the Database');
}
public function fetch($sql)
{
$array = mysqli_fetch_array($this->query($sql));
return $array;
}
public function close()
{
return mysqli_close($this->dbc);
}
}
?>
这是我的index.php:
require_once ("class.connect.php");
$connection = new mySQL();
$connection->connect('localhost', 'myDB', 'joker', 'names_list');
$myquery = "SELECT * FROM list";
$query = $connection->query($myquery);
while($array = $connection->fetch($query))
{
echo $array['first_name'] . '
';
echo $array['last_name'] . '
';
}
$connection->close();
?>
我收到错误说错误查询数据库.
解决方法:
问题是:
public function fetch($sql)
{
$array = mysqli_fetch_array($this->query($sql));
return $array;
}
或这个:
while($array = $connection->fetch($query))
因为您正在使用查询的结果再次进行查询.基本上,你在做:
$r = mysqli_query($this->dbc, $sql);
$array = mysqli_fetch_array(mysqli_query($this->dbc, $r));
并且您收到错误,因为$r不是查询字符串.当它被转换为字符串时,它是一个“1”(来自你的其他评论).
尝试将函数更改为(更改变量名称,以便您可以看到差异):
public function fetch($result)
{
return mysqli_fetch_array($result);
}
或者直接调用该函数.
标签:php,function,oop,mysqli
来源: https://codeday.me/bug/20190726/1540772.html