PHP 连接和查询错误:致命错误:在 null 上调用成员函数 query()
Posted
技术标签:
【中文标题】PHP 连接和查询错误:致命错误:在 null 上调用成员函数 query()【英文标题】:PHP connection and query error: Fatal error: Call to a member function query() on null in 【发布时间】:2019-03-10 23:37:57 【问题描述】:我在下面的陈述中遇到了上述错误,尝试了堆栈中其他答案的多个修复,但继续得到相同的错误:(
这是用户注册表单中 php 代码的一部分,希望将他们的信息插入表格中
if($conn->query( "INSERT INTO users (FIRST_NAME, LAST_NAME, USERNAME, PASSWORD)
VALUES ('$fname', '$lname', '$uname', '$pword')")==TRUE)
echo 'Inserted';
else
echo 'Not Inserted';
我在 $conn 的单独文件中有其他代码
function dbConnect()
$servername = "x";
$database = "activity2";
$username = "root";
$password = "root";
// Create connection
$conn = new
mysqli($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);
//echo "Connection successful"; //make variable global to access in other
functions global $conn; return $conn;
【问题讨论】:
错误在于$conn
的创建
我在一个单独的函数文件中有这个代码:function dbConnect() $servername = "x"; $数据库=“活动2”; $用户名=“根”; $密码=“根”; // 创建连接 $conn = new mysqli($servername, $username, $password, $database); // 检查连接 if ($conn->connect_error) die("Connection failed: " . $conn->connect_error); //echo "连接成功"; //使变量成为全局变量,以便在其他函数中访问 global $conn;返回 $conn;
那么在上面代码的文件中,我在顶部有全局$conn?
在上面之前你需要$conn=dbConnect();
您是否随时调用 dbConnect()?
【参考方案1】:
首先要做的是创建将返回连接的类:
<?php
//filename: dbConnect.php
class dbConnect
public function connect()
global $conn;
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";
// Create connection
$conn = new mysqli($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error)
die("Connection failed: " . $conn->connect_error);
//echo "Connection successful"; //make variable global to access in other
return $conn;
?>
现在您可以在另一个文件中执行您的 sql 命令:
<?php
require 'dbConnect.php';
$db = new dbConnect();
$conn = $db->connect();
$nome = "Anailton";
$email = "jose@hotmail.com";
if($conn->query( "INSERT INTO clientes (NOME, EMAIL) VALUES ('$nome', '$email')")==TRUE)
echo 'Inserted';
else
echo 'Not Inserted';
?>
【讨论】:
我得到$db无法解析为类型的错误 当我运行它时,我收到致命错误:第 55 行的 C:\xampp\htdocs\activity3\registerHandler.php 中找不到类 'dbConnect' 可以复制答案的内容并将其保存为文件夹 C:\xampp\htdocs\activity3 内的文件 dbConnect.php 有了这个我相信你的 registerHandler.php 会找到dbConnect 类。在 registerHandler.php 中(第 55 行之前),使用行 require 'dbConnect.php'; 您好,Junior,很抱歉,但很奇怪。它适用于我的 registerHandler 文件,但在我的 loginHandler 文件中,当我需要 dbConnect.php 时,它给我一个错误,我“无法重新声明类 dbConnect” 可以使用 require_once 代替 require。在需要建立数据库连接的每个 PHP 文件中使用它。以上是关于PHP 连接和查询错误:致命错误:在 null 上调用成员函数 query()的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:未捕获的错误:在 null 上调用成员函数 select()
致命错误:未捕获错误:在null上调用成员函数select()
PHP“致命错误:未捕获错误:调用成员函数prepare()为null”
使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误