php - 函数内部的全局数据库连接

标签 php mysql global-variables require

尝试在 .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/

相关文章:

unit-testing - Test_xxx func 是否可以安全地访问 golang 中的共享数据?

php - 在 Div 容器中显示 JSON 字符串

php - 使用 shell 脚本将 CSV 文件上传到数据库显示错误

php - 如何将varchar数据类型转换为datetime数据类型而不丢失数据

php - 初始化 PHP 交互

Mysql utf8mb4 连接字符串(Node.js、serverless-mysql 包)

c# - 在 C# 中将 .txt 文件打开到 richTextBox

C++ 函数跳过代码

php - 如何在php中的数组请求中使用变量

PHP - 优化查找数组中的最近点