Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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脚本I';我是从阿贾克斯打来的?_Php_Jquery_Ajax - Fatal编程技术网

为什么我的数据库变量在这个php脚本I';我是从阿贾克斯打来的?

为什么我的数据库变量在这个php脚本I';我是从阿贾克斯打来的?,php,jquery,ajax,Php,Jquery,Ajax,当我点击.deletePost时,我得到以下错误。看起来,$mysqli是未定义的,但我在类似的php脚本中以相同的方式使用它,并且它没有这个错误,所以我对发生了什么感到困惑。有人能解释一下吗?谢谢 错误: 注意:第16行的C:\wamp\www\NightOwlSoftware\scripts\post_action.php中的未定义变量:mysqli 警告:mysqli_query()要求参数1为mysqli,在第16行的C:\wamp\www\NightOwlSoftware\script

当我点击
.deletePost
时,我得到以下错误。看起来,
$mysqli
未定义的
,但我在类似的php脚本中以相同的方式使用它,并且它没有这个错误,所以我对发生了什么感到困惑。有人能解释一下吗?谢谢

错误:

注意:第16行的C:\wamp\www\NightOwlSoftware\scripts\post_action.php中的未定义变量:mysqli

警告:mysqli_query()要求参数1为mysqli,在第16行的C:\wamp\www\NightOwlSoftware\scripts\post_action.php中给出null

post_action.php

<?php

include 'db_connect.php';
include 'functions.php';
sec_session_start();
echo "<div>Hello World</div>";
echo "<div>Hello World</div>";
echo "<div>Hello World</div>";
echo "<div>Hello World</div>";
if($_GET['action'] == "deletePost")
        deletePost($_GET['postTitle']);
function deletePost($title){
    $sql = "DELETE FROM blog WHERE Title = '$title'";
    mysqli_query($mysqli, $sql);
}
?>
<?php
function sec_session_start() {
    $session_name = 'sec_session_id'; // Set a custom session name
    $secure = false; // Set to true if using https.
    $httponly = true; // This stops javascript being able to access the session id. 

    ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies. 
    $cookieParams = session_get_cookie_params(); // Gets current cookies params.
    session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
    session_name($session_name); // Sets the session name to the one set above.
    session_start(); // Start the php session
    session_regenerate_id(); // regenerated the session, delete the old one.  
}
?>
<?php
$host="localhost"; // Host name
$username="root"; // username
$password="********"; // password
$dbname="nightowl"; // Database name
$tblname="blog"; // Table name
$mysqli=mysqli_connect($host,$username,$password,$dbname);
mysql_connect("$host", "$username", "$password");
mysql_select_db("$dbname");
?>

您不需要
mysql\u select\u db()
mysql\u connect()
,因为您已经声明了它。

这是因为您在一个未定义为$mysqli非全局的范围内调用$mysqli。您必须将其作为deletePost函数的参数传递。例如:

function deletePost($title, $mysqli){
    $sql = "DELETE FROM blog WHERE Title = '$title'";
    mysqli_query($mysqli, $sql);
}

顺便说一句,在post_action.php脚本中定义的
$mysqli
变量在哪里?我包括dbconnect和functions.php,并且我使用我认为定义它的sec_session_start()?mysqli_query()的第一个参数的可能重复应该是链接标识符,从mysqli_connect()或mysqli_init()返回。谢谢你回答我的问题,而不是投票否决我。。。我显然是在试图理解,而当你对这个问题不确定的时候,你就不能做一些研究。
$mysqli
是全球性的,这就是问题所在。你的意思是说它不是超全球性的
function deletePost($title, $mysqli){
    $sql = "DELETE FROM blog WHERE Title = '$title'";
    mysqli_query($mysqli, $sql);
}