【问题标题】:Instantiate constructor class with mysqli with php用 php 用 mysqli 实例化构造函数类
【发布时间】:2018-06-26 15:26:09
【问题描述】:

我正在调用一个类以通过构造方法连接到我的本地 mySql 数据库。启动 php 文件时出现 500 错误。我做错了什么吗?当我实例化它但无法连接时,我将主机用户 pass 和 dbName 的值传递到类中。 db 工作正常,我已经测试过了。

<?php

Class MyDB{

    public $query;
    public $myConnection;

    public function__construct($host, $username, $password, $dbname){

        $this->myConnection = mysqli_connect($host, $username, $password, $dbname);

    }

    public function listScores(){

        $this->query = "SELECT answer FROM correct_guesses" or die("error ..." . mysqli_error($this->$myConnection));

        $result = $this->$myConnection->query($this->query);

        while($row = mysqli_fetch_array($result)) {
        echo $row["answer"] . "<br>";

        }
    }
}

$score = new MyDB('localhost','root','root','scoreDB');

$score->listScores();

?>

【问题讨论】:

  • 这里少了一个空格:function__construct 但我不确定这会导致 HTTP 500 错误。
  • 一般 500 错误意味着您需要检查服务器日志。最好使用报告/显示所有错误而不是记录它们的服务器进行开发。
  • 您的查询也将失败。这不是向查询中添加 die 语句的方式。
  • $this-&gt;query 怎么可能无法赋值?这里在许多层面上都存在很多问题,但最重要的是您将 OO 风格和程序风格混合在一起。使用 OO 风格。
  • 嗨 Aynber,在我在第 18 行的 myConnection 上附加缺少的空格和 $ 后,它对我来说很好。

标签: php mysql database mysqli


【解决方案1】:

您的“public function__construct() 中没有空格。它必须如下所示:

public function __construct()

它肯定会给你 500 错误。

【讨论】:

  • 我的文本编辑器会给出 php 错误。您还可以在服务器端启用所有错误和警告以进行调试。 (仅限开发者)
【解决方案2】:

不确定是否是原因,但 $this->$myConnection 应该是 $this->myConnection。那在 listScores 方法的第二行

【讨论】:

  • 在构造方法中缺少空格后,这也是一个问题,谢谢 fergal
  • 很高兴帮助卡勒姆
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2010-11-15
  • 2022-01-21
相关资源
最近更新 更多