尝试在 .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);
}
?>
保存.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() 函数中。
错误是:
Fatal error: Call to a member function query() on a non-object in /homepages/3/xxxxxxxx/htdocs/xxxxxxxx/xxxxxxxx/content.php on line 37
实际上我不知道这种使它成为全局的方法是否正确,所以请帮助我选择在函数内部建立全局数据库连接的最佳方法。
最佳答案
尝试
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 中设置。
关于php - 函数内部的全局数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28950441/