php - 如果我从 anathor 文件中包含 con,在哪里使 con 变量成为全局变量
问题描述
我在 anathor php 中包含了连接资源文件。我正在制作一个小网站。但是当我使用 $run_cats = mysqli_query($con,$get_cats); 错误来了 mysqli_query 希望参数 1 是 mysqli ,给定 null
我试图将 global $con 放在使用的地方并靠近 con = mysqli_connect 但没有一个有效
这是包含/db.php
<?php
$con = mysqli_connect("localhost","root","","ecommerce",3307);
?>
IN 插入产品页面,包括顶部
<!DOCTYPE>
<? php
include("includes/db.php");
?>
<select name="product_cat">
<option>Select a Category</option>
<?php
global $con;
$get_cats = "select * from categories";
$run_cats = mysqli_query($con,$get_cats);
while($row_cats=mysqli_fetch_array($run_cats)){
$cat_id = $row_cats['cat_id'];
$cat_title = $row_cats['cat_title'];
echo " <option value='$cat_id'>$cat_title</option> ";
}
?>
</select>
这里 $con 即将到来 null 。
我希望连接会来这里,但是 null 来了,con 范围存在一些问题。如何处理。
解决方案
您的 include/db.php 文件
在您的示例中使用 $con 的方式中, $con 在其余代码的范围内。所以可能会发生其他事情。
您应该测试 $conn 是什么。即在继续之前检查连接是否成功。
就像是...
<?php
$con = mysqli_connect("localhost","root","","ecommerce",3307);
if (!$con)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
它可能在包含上失败并且没有设置 $conn
您的示例代码中文件的位置是什么?
如果是包含失败的情况,那么它在哪里很重要,相对于您的包含路径/文件名。
启用错误报告
将这两行添加到它总是要运行的地方。这将确保您会看到任何错误。还有其他方法可以做到这一点,但我会留给你研究。
error_reporting(E_ALL);
ini_set('display_errors', 1);
所以假设你的 db.php 总是被包括在内,你可以有
<?php
// These Two Lines ONLY for Debugging.
// Remove when using in production.
error_reporting(E_ALL);
ini_set('display_errors', 1);
$con = mysqli_connect("localhost","root","","ecommerce",3307);
if (!$con)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
$con 的范围
在您的示例代码中, $con 在同一范围内,因此可以看到它是否设置正确。
在函数的情况下,它不会,所以你可以在函数中将 $con 声明为全局,或者你可以将它作为参数传递。这是你的选择。
更新。
我已经测试了你的代码并且“它对我有用”,所以你选择了错误的原因来解释你的代码为什么不工作。这绝对不是范围界定问题,因此请尝试其他建议,看看是否能帮助您取得成功。
您确定您的连接/数据库详细信息正确吗?
您确定您的连接详细信息正确吗?可能就这么简单。在您的 db.php 中添加的检查会立即告诉您原因是什么。
推荐阅读
- java - 使用 java SDK 将标签添加到 blob
- c - 为什么 gdb mi 给我 &"\n" 作为我的 -gdb-exit 命令的返回?
- python-3.x - 使用“虚拟文件”处理 Python 文件
- django - 在 django 的 html 上查看从管理员上传的图像
- c++ - c++ : std::visit 在 gcc 下不可编译
- openapi - 在 CUE 中定义数组并导出到 OpenAPI
- express - 根据 URL 前缀传递代理
- reactjs - 在移动设备中使用一段时间后,在本机反应中出现内存泄漏问题
- sql - SQL 中的累积队列
- python - 检查 dict 是否获得连续的增量计数器