我在anathor php中包含了连接资源文件。我正在制作一个小型网站。但是当我使用$ run_cats = mysqli_query($ con,$ get_cats); 错误出现,mysqli_query希望参数1为mysqli,给定为
我试图将全局$ con代替使用,并靠近con = mysqli_connect 但没有效果
这是include / 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范围存在一些问题。如何处理。
答案 0 :(得分:0)
您的包含文件/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中添加的检查将立即告诉您原因。