Php mysqli::query():无法';拿不到mysqli

Php mysqli::query():无法';拿不到mysqli,php,mysql,mysqli,Php,Mysql,Mysqli,警告:mysqli::query():无法在第43行的C:\Program Files(x86)\EasyPHP-DevServer-13.1VC9\data\localweb\my portable Files\class\u EventCalendar.php中获取mysqli 以下是我的连接文件: <?php if(!isset($_SESSION)) { session_start(); } // Create array to hold error messa

警告:mysqli::query():无法在第43行的C:\Program Files(x86)\EasyPHP-DevServer-13.1VC9\data\localweb\my portable Files\class\u EventCalendar.php中获取mysqli

以下是我的连接文件:

<?php
if(!isset($_SESSION)) 
{ 
    session_start(); 
}  

// Create array to hold error messages (if any)
$ErrorMsgs = array();

// Create new mysql connection object
$DBConnect = @new mysqli("localhost","root@localhost", 
            NULL,"Ladle");

// Check to see if connection errno data member is not 0 (indicating an error)
if ($DBConnect->connect_errno) {

    // Add error to errors array
    $ErrorMsgs[]="The database server is not available.".
               " Connect Error is ".$DBConnect->connect_errno." ".
               $DBConnect->connect_error.".";
}
?>

这是我的班级:

 <?php 
    class EventCalendar {
        private $DBConnect = NULL;

        function __construct() {
            // Include the database connection data
            include("inc_LadleDB.php");
            $this->DBConnect = $DBConnect;  
        }

        function __destruct() {
            if (!$this->DBConnect->connect_error) {
                $this->DBConnect->close();
            }
        }

        function __wakeup() {
            // Include the database connection data
            include("inc_LadleDB.php");     
            $this->DBConnect = $DBConnect;
        }


        // Function to add events to Zodiac calendar
        public function addEvent($Date, $Title, $Description) {
            // Check to see if the required fields of Date and Title have been entered
            if ((!empty($Date)) && (!empty($Title))) {
                /* if all fields are complete then they are 
                   inserted into the Zodiac event_calendar table */
                $SQLString = "INSERT INTO tblSignUps".
                           " (EventDate, Title, Description) ".
                           " VALUES('$Date', '$Title', '".
                            $Description."')";

                // Store query results in a variable
                $QueryResult = $this->DBConnect->query($SQLString);

错误原因是mysqli对象的初始化错误。真正的构造是这样的:

$DBConnect = new mysqli("localhost","root","","Ladle");

可能在某个地方有
DBconnection->close(),然后尝试执行一些查询



提示:插入
..->close()有时是错误的
\uuuu destruct()
中(因为
\uu destruct
是事件,之后需要执行查询)

检查数据库名称是否没有“\uu”或“-”
这对我有帮助

我也有同样的问题。我将mysqli对象中的localhost参数改为“127.0.0.1”,而不是写“localhost”。它起作用了;我不知道怎么做或者为什么

$db_connection = new mysqli("127.0.0.1","root","","db_name");

希望有帮助。

错误所指的第43行在哪里?请尝试更正您的mysqli对象:
$DBConnect=@new mysqli(“localhost”、“root”、“勺子”)对不起。。。首先尝试上面的方法,您可以访问mysqli对象…为什么在调用
new mysqli()
时通过
@
来抑制错误?@AycanYaşıt谢谢,它起作用了,很抱歉,我不确定如何正确指定空密码或用户字段有相同的问题“mysqli::query():无法获取mysqli”。谷歌搜索了一下,找到了这个答案。我关门太晚了。在连接和查询数据库之后,我包含了一个新的php文件,它不知道连接,所以显示了它的消息。如果有人在这个问题上运行,只需发表评论。Cheers Skudos,T.T.吸取的教训:不要允许任何东西通过_destruct()方法破坏DB对象。@T.Touda __destruct在类构造后不会被激发,但“只要没有对特定对象的其他引用,或在关闭序列中以任何顺序调用destructor方法。”看:你能解释一下为什么原始代码是“错误的”吗?如果凭据错误(这是我看到的唯一更改),那么应该有一条关于的明确错误消息that@NicoHaase很简单,root用户的密码是空字符串,并且提供了
NULL
。当凭据不正确时,错误消息通常类似于问题顶部的给定错误。@AycanYaşıt但在哪种情况下,当提供错误凭据时,您会收到错误消息“无法获取mysqli”?此外,文档中还指出,如果不使用参数,则会选择不带密码的用户。您能否进一步解释这是如何连接的?如果数据库名称出现问题,那么应该会有另一条非常明确的错误消息,并且允许在数据库名称中使用这两种类型的破折号。我无法解释这一点,但通过实验发现,任何破折号似乎都破坏了命令解释程序,并且不起作用。如果DB名称没有破折号,那么它就是完美的。花6个小时,然后第一次见面。那些投票否决了那些不理解的人,他们从来没有遇到过这样的人,所以他们不知道这是有效的,即使这看起来很愚蠢。好吧,我还是不理解。在什么情况下会有不同?在给定的PHP代码中,没有这样的“命令解释器”PHP它是解释器:)最近有WordPress这样的。是的,PHP本身不限制如何命名,但如果使用破折号重命名DB,并且在使用数据库名称时收到错误消息“无法获取mysqli”,则会得到确切的错误代码?或者您正在谈论另一个错误消息?