Php 调用同一文件中的第二个函数时出现Mysqli错误
insert函数调用正确,数据也正确插入 插入后,我将关闭finally块中的连接 但是在调用selectData()函数的同时,我遇到了一个错误 未定义变量:conn和未定义变量:stmtPhp 调用同一文件中的第二个函数时出现Mysqli错误,php,mysqli,Php,Mysqli,insert函数调用正确,数据也正确插入 插入后,我将关闭finally块中的连接 但是在调用selectData()函数的同时,我遇到了一个错误 未定义变量:conn和未定义变量:stmt 如何为第二个函数重新打开连接?当您在函数中为数据库连接使用一次include_时,这将仅在第一次加载脚本。在函数结束时,您还将关闭连接 <?php function insertData() { include_once 'database/connection.ph
如何为第二个函数重新打开连接?当您在函数中为数据库连接使用一次
include_
时,这将仅在第一次加载脚本。在函数结束时,您还将关闭连接
<?php
function insertData()
{
include_once 'database/connection.php';
echo "<br>============= Insert Data =================<br>";
try{
$sql = "INSERT INTO table1 (activity_date, activity_name, activity_point) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $activity_date, $activity_name, $activity_point);
// set parameters and execute
$activity_date = "06-APR-2020";
$activity_name = "Test";
$activity_point = "5";
$res = $stmt->execute();
var_dump("<br>Res:- ".$res);
print_r("<br>Result:- ".$res);
if ($res) {
echo "<br>Id:- ".$conn->insert_id;
echo "<br>New records created successfully";
}
else{
echo "<br>New records not inserted successfully";
}
}
catch(Exception $e){
echo "Exception:- ".$e;
}
finally{
$stmt->close();
$conn->close();
}
}
// insertData();
function selectData()
{
include_once 'database/connection.php';
echo "<br>============= Select Data =================<br>";
try{
$sql = "SELECT * FROM table1 WHERE activity_id > ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $activity_id);
// set parameters and execute
$activity_id = 6;
$stmt->execute();
if (!$stmt->errno) {
// Handle error here
}
$result = $stmt->get_result(); //
$rows = $result->num_rows;
if ($rows > 0){
while ($data = $result->fetch_all())
{
// var_dump($data);
var_export($data);
echo "<br>";
print_r($data);
}
}
else{
echo "Data Not Found";
}
}
catch(Exception $e){
echo "Exception:- ".$e;
}
finally{
$stmt->close();
$conn->close();
}
}
selectData();
?>
第二次调用函数时,不会再次执行include操作,并且连接已关闭,因此不会重新建立连接
您应该只为整个脚本创建一个连接(很少有例外)。因此,在脚本开始时,使用include,然后将连接传递给需要使用它的任何函数/类
$conn->close();
将参数添加到函数中
include_once 'database/connection.php';
insertData($conn);
然后关闭与系统的连接
最后一件事,我更喜欢的是使用
require\u once
或require
而不是include\u once
或include
,因为如果找不到文件,它们将停止脚本。让我猜猜。在数据库/connection.php
文件中初始化$conn
require_once
按照tin上的说明进行操作。它仅在您第一次调用它时加载文件获取错误:警告:mysqli::prepare():无法在第56行的C:\xampp\htdocs\wfm\index.php中获取mysqli致命错误:未捕获错误:在C:\xampp\htdocs\wfm\index.php中调用bool上的成员函数bind_param()。php:57堆栈跟踪:#0 C:\xampp\htdocs\wfm\index.php(97):selectData(Object(mysqli))#1{main}下一个错误:在C:\xampp\htdocs\wfm\index.php:92堆栈跟踪中调用bool上的成员函数close()。#0 C:\xampp\htdocs\wfm\index.php(97):selectData(Object(mysqli))#1{main}抛出C:\xampp\htdocs\wfm index.php第92行是否在其他任何地方关闭连接?代码保持不变。我刚刚在函数中传递了连接,在函数的顶部,我在文件的顶部添加了require代码>。
function insertData( $conn )