【问题标题】:Fatal error: Call to a member function query() on a non-object in C:\wamp\www\demo.php on line 27致命错误:在第 27 行的 C:\wamp\www\demo.php 中的非对象上调用成员函数 query()
【发布时间】:2014-05-30 18:59:20
【问题描述】:

当我编写这段代码时,我收到一个致命错误:

在非对象上调用成员函数 query() C:\wamp\www\demo.php 第 27 行。

我怎样才能摆脱这个错误?

<!DOCTYPE html>
<html>
<body>
<?php

$searchtype  = $_POST["searchtype"];
$searchterm  = $_POST["searchterm"];
$searchterm  = trim($searchterm);

if(!$searchtype && !$searchterm) {
    echo "You have not entered search details.";
}

$mysqli = new mysqli("localhost","root","","books"); 

if($mysqli = false) {
    echo "ERROR:Sorry,Could Not Connect To The Database.";
} else {
    echo "Connected To Database";
} 

$sql = "SELECT author FROM books"; 

if($mysqli -> query($sql)) {
    echo "Connected To Tables";
} else {
     echo "Cannot connect tot tables right now."; 
} 


?>

</html>

【问题讨论】:

    标签: php


    【解决方案1】:
    if ($mysqli = false)
    

    这一行将布尔值false 分配给$mysqli。将其更改为: if ($mysqli == false) 或(更好)if ($mysqli === false)

    为防止将来出现此错误,我建议您使用Yoda conventions。换句话说:

    if (false === $mysqli)
    

    【讨论】:

      【解决方案2】:

      它是:

      if ($mysqli->connect_errno) {
          printf("Connect failed: %s\n", $mysqli->connect_error);
          exit();
      }
      

      根据http://www.php.net/manual/en/mysqli.query.php

      查询执行也需要改为

      if($mysqli->query($sql)) {
      

      【讨论】:

        【解决方案3】:

        在您的代码中检查

        if($mysqli = false)
        

        当你想要的时候

        if($mysqli == false)
        

        但是,如果出现连接问题,这将不起作用,因为您仍然会得到一个 mysqli 实例。你在寻找

        if($mysqli->connect_error)
        

        更多信息请见here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-15
          • 1970-01-01
          • 2014-10-21
          • 1970-01-01
          • 2014-02-10
          • 2015-04-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多