XAMPP, Eclipse, PHP, MySQL: Fatal error: Call to a member function fetch_array() on null

XAMPP, Eclipse, PHP, MySQL: Fatal error: Call to a member function fetch_array() on null

这里是初学者,我正在尝试使用 XAMPP 本地主机从 PhoneGap 应用程序调用 Web 服务器以完成学校作业。我有一个来自先前项目之一的工作 login.php 文件。然而,一旦转移到新项目,Eclipse 将不会 运行 PHP 代码,因此,整个项目,显示如上所示的错误:“致命错误:调用成员函数 fetch_array() 为空”。

现在的项目和以前的项目之间的区别在于我放置 PHP 文件的位置。由于我不再拥有 Microsoft Azure 订阅,因此我已切换到本地主机 XAMPP。因此,还将我的 php 文件位置从 http://example.cloudapp/login.php 更改为我的 html 文件所在的同一文件夹,更改为 htcdocs/project/login.php。 以下是 login.php 代码:

</p> <pre><code><?php header("Access-Control-Allow-Origin: *"); header("Content-Type: application/json; charset=UTF-8"); error_reporting(E_ERROR); try{ $conn = new mysqli("127.0.0.1", "root", "root", "bencoolen"); $userid = $_GET["userid"]; $password = $_GET['password']; $query = "SELECT count(*) as found from profiles where userid ='" . $userid . "' and password = '" . $password . "'"; $result = $conn->query($query); $count = $result->fetch_array(MYSQLI_NUM); $json_out = "[" . json_encode(array("result"=>$count[0])) . "]"; echo $json_out; $conn->close(); } catch(Exception $e) { $json_out = "[".json_encode(array("result"=>0))."]"; echo $json_out; } ?>

我已确保数据库 'bencoolen' 是使用名为 'profiles' 的 table 创建的,其中包含 'userid' 和 'password' 字段。

我还在 Eclipse 上下载了 'PHP Development Tool',我所有的 php 代码语法都被突出显示了。 Eclipse 还可以在我添加 login.php 之前 运行 javascript 和 html 代码。 Eclipse 将我定向到第 12 行,出现致命错误,即:

$count = $result->fetch_array(MYSQLI_NUM);

这是我不支持的理论: 我认为他们无法识别我的用户 ID 和密码字段,因为 PHP 文件因其文件位置

而未连接到数据库

我认为:你必须获取那条记录,它将包含 Count()

的结果
$result = $db->query("SELECT COUNT(*) FROM `table`");
$row = $result->fetch_row();
echo '#: ', $row[0];

我并不是说下面的代码是最好的方法,但您可以遵循并获得结果我也在同样的场景下工作并获得成功。

<?php
    $server = "127.0.0.1";
    $user = "root";
    $pass = "root";
    $db = "bencoolen";
    //open connection to mysql db
    $connection = mysqli_connect($server,$user,$pass,$db) or die("Error " . mysqli_error($connection));

    $userid = $_REQUEST['userid'];
    $password = $_REQUEST['password'];

    //fetch table rows from mysql db

    $sql = "select * from profiles WHERE userid= '$userid' AND password = '$password'";
    $result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

   // echo json_encode(mysqli_num_rows($result));
    if($result){
        if (mysqli_num_rows($result) >= 1 ) {
            $json=array("status"=>1,"message"=>"done");
            echo json_encode($json);
        }else{
            $json=array("status"=>0,"message"=>"email or password not match!");
            echo json_encode($json);
        }
    }else{
        $json=array("status"=>0,"message"=>"error");
        echo json_encode($json);
    }
    mysqli_close($connection); ?>

如果您 运行 在同一台机器上,您可以使用“localhost”代替 127.0.0.1

并且您需要这样调用您的服务:

http://localhost/login.php?userid=test&password=12345

希望对您有所帮助。