Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL连接没有';不存在| PHP&;MySQL_Php_Mysql - Fatal编程技术网

MySQL连接没有';不存在| PHP&;MySQL

MySQL连接没有';不存在| PHP&;MySQL,php,mysql,Php,Mysql,我编写了一些代码,正在调用(require function).php文件,该文件将连接到MySQL库。我调用另一个文件(不是MySQL连接的文件),因为我想一次打开一个连接,一次关闭它。错误说 未定义变量:_hsync_konekcija,位于C:\Program Files\WAMP\www\hsync_hsync_scripts\u hsync_pristup.php的第21行 _hsync_pristup.php文件 <?php require('_hsync_scripts/_

我编写了一些代码,正在调用(require function).php文件,该文件将连接到MySQL库。我调用另一个文件(不是MySQL连接的文件),因为我想一次打开一个连接,一次关闭它。错误说

未定义变量:_hsync_konekcija,位于C:\Program Files\WAMP\www\hsync_hsync_scripts\u hsync_pristup.php的第21行

_hsync_pristup.php文件

<?php

require('_hsync_scripts/_hsync_baza.php');

function _hsync_pristup()
{
    session_start();

    if(isset($_COOKIE['_hsync_prijavljen'])) $_hsync_id = $_COOKIE['_hsync_prijavljen']; // PRIJAVLJEN
    else if(isset($_SESSION['_hsync_sess_prijavljen'])) $_hsync_id = $_SESSION['_hsync_sess_prijavljen']; // PRIJAVLJEN
    else
    {
        $_hsync_pristup_info = array(
            '_hsync_pristup' => 0
        );

        $_hsync_konekcija->close();
        return ($_hsync_pristup_info);
    }

    /* THIS LINE */ $_hsync_statment = $_hsync_konekcija->prepare("SELECT Zakljucan, Ime, Skin FROM $_hsync_usr WHERE ID = ?"); // LINE 21
    $_hsync_statment->bind_param("i", $_hsync_id);
    $_hsync_statment->execute();
    $_hsync_rezultat = $_hsync_statment->get_result();

    if($_hsync_rezultat->num_rows == 0) // OBIRSAN RAČUN
    {
        $_hsync_pristup_info = array(
            '_hsync_pristup' => -1
        );

        session_unset();
        session_destroy();
        setcookie("_hsync_prijavljen", null, -1, "/");

        $_hsync_statment->close();
        $_hsync_rezultat->close();
        $_hsync_konekcija->close();
        return ($_hsync_pristup_info);
    }

    $_hsync_podatci = $_hsync_rezultat->fetch_assoc();
    if($_hsync_podatci["Zakljucan"] != 0) // ZAKLJUČAN RAČUN
    {
        session_unset();
        session_destroy();
        setcookie("_hsync_zakljucan", $_hsync_id, time() + 8, "/");
        setcookie("_hsync_zakljucan_zap", rand(6, 16), time() + 8, "/");
        setcookie("_hsync_prijavljen", null, -1, "/");

        $_hsync_pristup_info = array(
            '_hsync_pristup' => -2
        );

        $_hsync_statment->close();
        $_hsync_rezultat->close();
        $_hsync_konekcija->close();
        return ($_hsync_pristup_info);
    }
    else
    {
        $_hsync_ime = $_hsync_podatci['Ime'];
        $_hsync_skin = $_hsync_podatci['Skin'];
    }

    $_hsync_statment = $_hsync_konekcija->prepare("SELECT ServerID FROM $_hsync_srv_online WHERE ID = ?");
    $_hsync_statment->bind_param("i", $_hsync_id);
    $_hsync_statment->execute();
    $_hsync_rezultat = $_hsync_statment->get_result();

    if($_hsync_rezultat->num_rows != 0) // PRIJAVLJEN NA GAME SERVERU
    {
        $_hsync_podatci = $_hsync_rezultat->fetch_assoc();
        $_hsync_serverid = $_hsync_podatci["ServerID"];

        session_unset();
        session_destroy();
        setcookie("_hsync_prijavljen", null, -1, "/");
        setcookie("_hsync_online", $_hsync_id, time() + 8, "/");
        setcookie("_hsync_online_id", $_hsync_serverid, time() + 8, "/");

        $_hsync_pristup_info = array(
            '_hsync_pristup' => -3
        );

        $_hsync_statment->close();
        $_hsync_rezultat->close();
        $_hsync_konekcija->close();
        return ($_hsync_pristup_info);
    }

    if(isset($_COOKIE['_hsync_zabrana'])) return (-4); // IMA ZABRANU PRISTUPA
    else // NEMA ZABRANU
    {
        $_hsync_statment = $_hsync_konekcija->prepare("SELECT ID FROM $_hsync_srv_bnds WHERE ID = ? AND Aktivno = 1"); // TRAŽI DALI JE IMA
        $_hsync_statment->bind_param("i", $_hsync_id);
        $_hsync_statment->execute();
        $_hsync_rezultat = $_hsync_statment->get_result();

        if($_hsync_rezultat->num_rows > 0) // IMA ZABRANU
        {
            session_unset();
            session_destroy();
            setcookie("_hsync_prijavljen", null, -1, "/");
            setcookie("_hsync_zabrana", $_hsync_id, time() + 31536000, "/");

            $_hsync_pristup_info = array(
                '_hsync_pristup' => -4
            );

            $_hsync_statment->close();
            $_hsync_rezultat->close();
            $_hsync_konekcija->close();
            return ($_hsync_pristup_info);
        }
    }

    $_hsync_datum = date("d. m. Y.");
    $_hsync_vrijeme = date("H:i:s");

    $_hsync_statment = $_hsync_konekcija->prepare("UPDATE $_hsync_usr SET DatumhSync = ?, VrijemehSync = ? WHERE ID = ?");
    $_hsync_statment->bind_param("ssi", $_hsync_datum, $_hsync_vrijeme, $_hsync_id);
    $_hsync_statment->execute();

    $_hsync_pristup_info = array(
        '_hsync_pristup' => 1,
        '_hsync_ime' => $_hsync_ime,
        '_hsync_id' => $_hsync_id,
        '_hsync_skin' => $_hsync_skin
    );

    return ($_hsync_pristup_info);
}

我不知道为什么PHP说连接变量不存在<代码>要求(“\u hsync_scripts/\u hsync_baza.php”)在顶部,所以它是全局的,对吗?

如果_hsync_konekcija是全局的,那么告诉函数!在函数中访问它之前,请将

global $_hsync_konekcija;

查看变量范围的更全面描述。

我假设这是一个范围问题。基本上,您的函数无法访问在其外部实例化的局部变量(从文件中包括的)

有两种选择

1) 在函数中需要“hsync_baza.php”文件

<?php
function _hsync_pristup(){
    session_start();
    require('_hsync_scripts/_hsync_baza.php');
    ...
}

显示其他文件。这是一个可变范围问题。如果要在函数中使用
$\u hsync\u konekcija
,则需要在函数中声明它,将其作为参数传递,或将其声明为全局函数。您必须在函数中显式声明全局变量才能使用它们——只需将其放在文件顶部不会影响anything@AndrewCheong另一个文件是index.php。函数
\u hsync\u pristup()
检查用户是否已登录。我是PHP新手,但我认为另一个文件不会有帮助,因为在_hsync_pristup.phpLooks中存在错误,例如调用了“$\u hsync_konekcija->close()”,但从未调用连接。(第18行)@SilvioCro-你得问问PHP和PAWN的设计师。这就是全局变量在PHP中的工作方式PHP说
解析错误:语法错误,意外的“=”,应为“,”或“;”@SilvioCro答案不是这么说的。@JonStirling那么我不明白你的意思。那么我将如何连接到基地?@SilvioCro重新阅读答案,阅读链接到的文档。所有的信息都在那里。@JonStirling我使用面向对象的PHP。不管怎么说,我什么也没做。还是一样的错误和问题。我喜欢第一个选项,但我需要多次连接到基站。第一个C连接将出现在
\u hsync\u pristup()
中,第二个C连接稍后将出现在
index.php
中。既然可以连接一次,为什么还要连接两次?我还在index.php
require(“\u hsync_scripts/\u hsync_baza.php”)中尝试了这个方法;需要(“\u hsync_scripts/\u hsync_pristup.php”)包含第一个基,然后使用函数创建文件。我想那会管用的。
<?php
function _hsync_pristup(){
    session_start();
    require('_hsync_scripts/_hsync_baza.php');
    ...
}
<?php
require('_hsync_scripts/_hsync_baza.php');

function _hsync_pristup() use ($_hsync_konekcija, $_hsync_SOMETHING_ELSE, ..){
   ...
}