尝试在.php文件中的所有函数中进行全局数据库连接。
sql.php:
<?php
$servername = "XXXXX";
$username = "XXXXX";
$password = "XXXXX";
$dbname = "XXXXX";
$conn = new mysqli($servername, $username, $password, $dbname);
mysqli_set_charset($conn, "utf8");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
save.php
$conn = require_once('../path/to/sql.php');
function save()
{
global $conn;
$sql = "INSERT INTO `content` (title, text, cat)
VALUES ('".$_POST["title"]."', '".$_POST["text"]."', '".$_POST["category"]."')";
if ($conn->query($sql) === TRUE) {
show();
}
$conn->close();
}
我希望得到带有require_once的sql.php,然后将其设为全局,然后将其放入save()函数中。
错误是:
致命错误:在非对象中调用成员函数query() 第37行/homepages/3/xxxxxxxx/htdocs/xxxxxxxx/xxxxxxxx/content.php
实际上我不知道这种方式使它全局正确与否,所以请帮助我选择在函数内部建立全局数据库连接的最佳方法。
答案 0 :(得分:-1)
尝试
define('DATABASE_USERNAME', 'root');
define('DATABASE_PASSWORD', 'password');
define('DATABASE_HOST', 'localhost');
define('DATABASE_DBNAME', 'db');
$conn = new mysqli(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_DBNAME);
命名常量非常适合静态全局数据。
你还需要做
require_once 'path/to/sql.php';
而不是
$conn = require_once 'path/to/sql.php';
$ conn已在您的require_once中设置。