繁体   English   中英

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

[英]Global database connection inside functions

尝试在.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()函数中。

错误是:

致命错误:在第37行的/homepages/3/xxxxxxxx/htdocs/xxxxxxxx/xxxxxxxx/content.php中的非对象上调用成员函数query()

实际上我不知道这种使它成为全局的方法正确与否的方法,所以请帮助我选择在函数内部建立全局数据库连接的最佳方法。

尝试

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中设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM