php - 坚持使用 PHP 中的 mysqli 类

标签 php mysql database mysqli scope

<分区>

我对使用 PHP 进行面向对象的编程还很陌生,无法弄清楚为什么下面的代码不起作用。任何帮助将不胜感激!

public function connect() {
  $db = new mysqli($this->host,$this->username,$this->password,$this->database);

  if ($db->connect_errno){
    echo "Failed to connect to MySQL: (" . $db->connect_errno . ") " . $db->connect_error;}

  return $this->buildDB();
}

private function buildDB() {
  $sql = "CREATE TABLE IF NOT EXISTS news (
        title   VARCHAR(150),
        body    TEXT,
        created   VARCHAR(100))";

  $db->query($sql);

  return true;
}

执行时出现以下错误:

Notice: Undefined variable: db in C:\xampp\htdocs\SimpleCMS\cms.php on line 25

Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\SimpleCMS\cms.php on line 25

最佳答案

看起来您正在使用类进行编程。最合乎逻辑的是拥有一个保存连接的变量。像这样:

private $db; // Variable to hold the database-connection

public function connect() {
    $this->db = new mysqli($this->host,$this->username,$this->password,$this->database);

    if ($this->db->connect_errno) {
        echo "Failed to connect to MySQL: (" . $this->db->connect_errno . ") " . $this->db->connect_error;
    }
    else {
        $this->buildDB();
    }
}

private function buildDB() {
    $sql = "CREATE TABLE IF NOT EXISTS news (
        title   VARCHAR(150),
        body    TEXT,
        created   VARCHAR(100))";
    $this->db->query($sql);
}

关于php - 坚持使用 PHP 中的 mysqli 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17033356/

相关文章:

php - 在MySQL数据库中创建PHP缓存系统?

mysql - 删除带有链接的表

MySQL : Storing business logic in table

PHP cron 作业由于最大执行时间 fatal error 而提前终止

php - ID 的唯一性

mysql - 用总和将行分组为列

android - 正确创建和查询 SQLite 错误表

php - 从 MySQL 表并发获取任务

PHP/MySQL 重新排序菜单,在表中设置位置

php - Laravel 5.2 获取与 whereIn() 中相同顺序的记录