为什么php无法正常工作

时间:2014-08-12 06:31:42

标签: php

这是一个非常简单的问题:为什么这个程序不起作用? 我没有回应"连接数据库"。问题是echo无效。

<?php    

  require "Database.php";
  echo "Connected to database";

?>

如果这有助于更好一点, 这是Database.php

<?php
 class Database($hostname,$username,$password,$dbname) {

  return new mysqli($hostname,$username,$password,$dbname);

  public static function Query() {

  }
 }
?>

4 个答案:

答案 0 :(得分:3)

您的Database.php文件中有错误。
该错误导致脚本在回显之前退出,并生成一个空页面(如果启用了错误报告,则显示错误)。

错误是由类声明中的return语句引起的 和类声明中的in-parameters。

声明class

class Database {
  // code.
}

class Database($variable) {

}

return本身的任何内容都不可能class,它必须位于function,因为你实际上从未像class那样实际调用function使用constructor,但是class instance类(使用new创建functions时)及其methods和{{1}}。

答案 1 :(得分:1)

  

代码中有两个错误:

     

1.Class不需要参数。如果您需要参数,那么您可以使用构造函数。

function __construct($hostname, $username, $password, $dbname) {
  return new mysqli($hostname, $username, $password, $dbname);
}
  

2.任何返回只能与方法/功能一起使用。它不能在Class中独立存在。

function __construct($hostname, $username, $password, $dbname) {
    return new mysqli($hostname, $username, $password, $dbname); // See here.
}
  

请使用下面的修正代码

<?php
class Database{

protected static $_instance;
protected $_mysqli;

function __construct($hostname,$username,$password,$dbname) {
    $this->_mysqli = new mysqli($hostname,$username,$password,$dbname);
    self::$_instance = $this;
}

public static function Query() {
}
}
?>

答案 2 :(得分:0)

首先,您需要将require()括在括号中。其次,您的database.php文件中存在错误。你可能想调用die()函数来确保代码停止执行。在database.php文件上进行一些调试。

<?php    

  require("Database.php");
  echo "Connected to database";

?>

建议:将您的php文件和函数命名为以大写字母开头的不良做法。

答案 3 :(得分:0)

另外,由于您的问题已经得到解答,我会帮助您。有一个更好的替代mysqli是dpo,它主要更好,因为它支持各种DBMS,但它相对于mysqli更好全面,在我看来更安全。以下是一些连接数据库的代码。所以你应该注意,这个相同的代码可以与其他数据库一起使用,因此如果需要更改到另一个DBMS / RDMS,则无需更改代码

define('DB_URL', 'mysql:host=$hostname;dbname=$dbname');

define('DB_USERNAME', $username);

define('DB_PASSWORD', $password);

$db = new PDO(DB_URL, DB_USERNAME, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

对你来说也只是一点帮助:

function dp($something, $exit=true)
{
    print('<pre>');
    print_r($something);
    print('</pre>');
    if($exit){
        exit;
    }
}

这将有助于ALOT进行调试,每当你需要知道你的php中变量的值时,只需添加

dp($variable, false)

false是可选的,如果你添加它,那么它将继续加载页面,如果你把它遗漏掉,函数将defult为true,它将不会在dp之后加载页面的其余部分。

希望有所帮助:)

乔尔