这是一个非常简单的问题:为什么这个程序不起作用?
我没有回应"连接数据库"。问题是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() {
}
}
?>
答案 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之后加载页面的其余部分。
希望有所帮助:)
乔尔