Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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
Php mysqli与全局变量_Php_Mysqli - Fatal编程技术网

Php mysqli与全局变量

Php mysqli与全局变量,php,mysqli,Php,Mysqli,我花了几个小时试图找出我犯的小错误,但我就是找不到。。。我所做的就是在函数中调用一个变量作为全局变量,它只是不起作用,即使它与上面的函数配合得很好 我收到一个错误,说mysqli为null include 'data/mysqli_connect.php'; function process_login(){ global $mysqli; $username = $_SESSION['username']; $sql = "SELECT * FROM auth WHERE user

我花了几个小时试图找出我犯的小错误,但我就是找不到。。。我所做的就是在函数中调用一个变量作为全局变量,它只是不起作用,即使它与上面的函数配合得很好

我收到一个错误,说mysqli为null

include 'data/mysqli_connect.php'; 

function process_login(){

global $mysqli;

$username = $_SESSION['username'];


$sql = "SELECT * FROM auth WHERE user='".mysqli_real_escape_string($mysqli,$username)."'";
$query = mysqli_query($mysqli,$sql);


if(mysqli_num_rows($query)>0){

$sql = "DELETE FROM auth WHERE user='".mysqli_real_escape_string($mysqli,$username)."'";
$query = mysqli_query($mysqli,$sql);


if(!$query){

die(mysqli_error());

}

}


$sql = "INSERT INTO auth (user, session) VALUES ('".mysqli_real_escape_string($mysqli,$username)."', '".$_SESSION['id']."')";
$query = mysqli_query($mysqli,$sql);

if(!$query){

echo "Can not insert info into database!<br />". mysqli_error();

}else{

header("Location:chat.php");

}

}


function logout(){

global $mysqli;

$sql = "DELETE FROM auth WHERE session='".mysqli_real_escape_string($mysqli,$_SESSION['id']). "'";
$query = mysqli_query($mysqli,$sql);


if(!$query){

echo "Can not delete info from database!";

}else{

session_destroy();
header("Location: chat.php");

}

}


function get_username(){

global $mysqli;


$sql = "SELECT * FROM auth WHERE session='".mysqli_real_escape_string($mysqli,$_SESSION['id']). "'";
$query = mysqli_query($mysqli,$sql);
$row = mysqli_fetch_array($query);


if(mysqli_num_rows($query) == "0"){

$username = "Guest";

}else{

$username = $row['user'];

 }

 return $username;

}



function post_message(){

global $mysqli;

$text = addslashes(htmlentities(htmlspecialchars($_REQUEST['text'])));


$sql = "INSERT INTO chat (time, user, text) VALUES ('".date("H:i")."', '".get_username()."', '".$text."')";

$query = mysqli_query($mysqli,$sql);


if(!$query){

die(mysqli_error());

}

}

    mysqli_connect.php
    $mysqli = mysqli_connect(localhost, "info", "info", "info");
包括“data/mysqli_connect.php”;
函数进程\u登录(){
全球$mysqli;
$username=$\会话['username'];
$sql=“SELECT*FROM auth WHERE user=”.mysqli\u real\u escape\u string($mysqli,$username)。”;
$query=mysqli\u query($mysqli,$sql);
如果(mysqli_num_行($query)>0){
$sql=“从身份验证中删除,其中user=”.mysqli\u real\u escape\u字符串($mysqli,$username)。”;
$query=mysqli\u query($mysqli,$sql);
如果(!$query){
die(mysqli_error());
}
}
$sql=“插入到auth(用户,会话)值(“.mysqli\u real\u escape\u字符串($mysqli,$username)。”、“$\u会话['id']。”)”;
$query=mysqli\u query($mysqli,$sql);
如果(!$query){
echo“无法将信息插入数据库!
”。mysqli_错误(); }否则{ 标题(“位置:chat.php”); } } 函数注销(){ 全球$mysqli; $sql=“从身份验证中删除,其中session=”。mysqli\u real\u escape\u字符串($mysqli,$\u session['id'])。“”; $query=mysqli\u query($mysqli,$sql); 如果(!$query){ echo“无法从数据库中删除信息!”; }否则{ 会话_destroy(); 标题(“位置:chat.php”); } } 函数get_username(){ 全球$mysqli; $sql=“SELECT*FROM auth WHERE session=”。mysqli\u real\u escape\u string($mysqli,$\u session['id'])。“”; $query=mysqli\u query($mysqli,$sql); $row=mysqli\u fetch\u数组($query); if(mysqli_num_rows($query)=“0”){ $username=“Guest”; }否则{ $username=$row['user']; } 返回$username; } 函数post_message(){ 全球$mysqli; $text=addslashes(htmlspecialchars($_请求['text'])); $sql=“插入聊天(时间、用户、文本)值(“.”.date(“H:i”)。“,”。get_username()。”,“$text”)”; $query=mysqli\u query($mysqli,$sql); 如果(!$query){ die(mysqli_error()); } } mysqli_connect.php $mysqli=mysqli_connect(localhost,“info”,“info”,“info”);
就像我说的,它对这个上面的函数有效,但不是这个,它没有意义。。。我猜我在某个地方犯了个愚蠢的错误,只是不知道在哪里

顺便说一下,我测试和使用的函数是
process\u login()
logout()
get\u username()

get\u username()
首先运行,然后
process\u login()
post_message()
从一个jquery代码运行,当我按enter键时调用它,这可能工作正常,因为我在按enter键时可以看到错误代码

哦,很抱歉代码格式不好,不知道如何在这里修复它


感谢您提供的任何帮助或建议。

如何/何时拨打
post\u message()
?从您在中编辑的内容中,我找不到任何可以清除
$mysqli
变量的具体内容,但是要调试它,我们需要更多的程序流

或者,在声明
global$mysqli之后,您可以在代码中和
post_message()
中创建一个“hack”
,是否包含“data/mysqli_connect.php”,因为此时对数据库连接的
$mysqli
引用已丢失。但是,在理想情况下,您需要遵循代码流来确定正确的修复位置,并且您的代码流似乎无法完全发布,或者太大而无法在此处完全发布


(对于注释来说太长了,因此此响应以应答形式出现,我很抱歉。)

与其将$mysqli作为全局变量,不如尝试将其作为附加参数传递给函数。我也遇到了同样的问题,我就是这样解决的。即

function post_message($mysqli){


$text = addslashes(htmlentities(htmlspecialchars($_REQUEST['text'])));


$sql = "INSERT INTO chat (time, user, text) VALUES ('".date("H:i")."', 
'".get_username()."', '".$text."')";

$query = mysqli_query($mysqli,$sql);


if(!$query){

die(mysqli_error());

}

希望这对你有用。

开始学习准备好的陈述。你在评论中所说的“让我们清理用户输入的文本”是完全错误的。哦,忘了说我得到的错误是$mysqli为null,所以是空的,我已经测试过了,真的是空的…我首先建议将
localhost
作为
'localhost'
来考虑@Jon的评论-PHP将未知常量视为字符串并带有E_通知的错误特性使
localhost
按原样工作。打开
display_errors
error_reporting(E_ALL)
查看PHP如何处理该常量。@MichaelBerkowski他们已经打开了,他们没有给出任何信息。。。我猜唯一的错误是$mysqli为null。它说“警告:mysqli_query()期望参数1为mysqli,null”,但是的,它…感谢您的建议,在多次查看流程后,我意识到在jquery中发送文件时我弄错了目录,很抱歉给您带来麻烦。。。