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。
并且您需要这样调用您的服务:
希望对您有所帮助。
这里是初学者,我正在尝试使用 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。
并且您需要这样调用您的服务:
希望对您有所帮助。