如果我包括anathor文件中的con,在哪里使con变量成为全局变量

时间:2019-06-09 13:03:39

标签: php

我在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范围存在一些问题。如何处理。

1 个答案:

答案 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中添加的检查将立即告诉您原因。