当前位置: 首页 > 知识库问答 >
问题:

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

富勇军
2023-03-14

我在anathor php中包含了连接资源文件。我正在做一个小网站。但是当我使用$run_cats=mysqli_query($con,$get_cats);错误来了,mysqli_query希望参数1是mysqli,空给定

我试图把全局$con放在使用的地方,并接近con=mysqli_connect但没有一个工作

这是includes/db。php

   <?php 
 $con = mysqli_connect("localhost","root","","ecommerce",3307);
 ?>

在插入产品页面中,包括顶部

<!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出现了,con范围出现了一些问题。如何处理它。

共有1个答案

孟鸿德
2023-03-14

您的包含/db.php文件

在示例中使用$con的方式中,$con在代码其余部分的范围内。所以可能发生了别的事情。

你应该测试一下$conn是什么。i、 e继续之前,请检查连接是否成功。

类似于。。。

<?php 
$con = mysqli_connect("localhost","root","","ecommerce",3307);
if (!$con)
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>

它可能在包含上失败,并且没有设置$conn

该文件在示例代码中的位置是什么?

如果是包含失败的情况,那么相对于包含路径/文件名,它在哪里很重要。

启用错误报告

将这两行html" target="_blank">代码添加到始终要运行的位置。这将确保您看到任何错误。有其他方法可以做到这一点,但我会留给你去研究。

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声明为全局的,也可以将其作为参数传入。选择权在你。

更新。

我已经测试了你的代码,“它对我有效”,所以你选择了错误的原因来解释你的代码不起作用。这绝对不是一个范围问题,所以尝试其他建议,看看这是否会让你成功。

您确定您的连接/数据库详细信息正确吗?

您确定您的连接详细信息正确吗?事情可能就这么简单。在数据库中添加的检查。php会立即告诉您原因是什么。

 类似资料:
  • 问题内容: 我具有以下文件结构: 型号/db.go models / db_util.go 当我尝试访问的功能,它说。如何访问的? 我不想大写(因为它可以访问所有软件包)。 我正在从返回的查询中正确。 问题答案: 编辑: 问题是您使用了Short变量声明, 并且只是将创建的值存储在本地变量中,而不是全局变量中。 这行: 创建2个局部变量:和,并且该局部变量与全局变量无关。您的全局变量将保留。您必须

  • 问题内容: 我正在使用函数,这样我的程序就不会一团糟,但我不知道如何将局部变量变成全局变量。 问题答案: 这是两种实现相同目的的方法: 使用参数并返回(推荐) 运行时,将获得以下输出 使用全局变量(永远不要这样做) 现在您将获得:

  • 可能重复: javascript:string包含 我有一个postcode变量,希望在更改/输入邮政编码时使用JS将一个位置添加到不同的变量中。例如,如果输入了ST6,我希望输入Stoke North。 我需要做一个if语句来运行。 等等。 我该怎么做呢?它不是检查'code'是否等于一个值,而是检查它是否包含一个值,我认为这是我的问题。

  • 问题内容: 在GOLANG中,是否有办法使变量的作用域在包中的文件本地?就我而言,有2个文件ex1.go和ex02.go。ex01.go定义了一个全局变量 在该文件中的所有功能之间使用。 在另一个文件ex02.go中(除了ex01.go和ex02.go属于同一类问题(即并发性),它与ex01.go无关),我无法为waitGroup定义一个变量,如下所示: 我收到一个错误-“在此块中重新声明了变量名

  • 问题内容: 我需要所有文件中都需要的一些全局变量。 例如,考虑以下4个文件: 考虑到我将上述所有4个文件都加载到HTML文档中,有没有一种方法可以在其中声明3个全局变量并在其他3个文件中的任何一个中访问它们? 有人可以告诉我是否可行,还是可以解决这个问题? 问题答案: 只需在函数范围之外的global.js中定义变量: 为确保此方法有效,您必须先包含/链接到global.js,然后再尝试访问该文件

  • 本文向大家介绍Lua中的全局变量、非全局变量总结,包括了Lua中的全局变量、非全局变量总结的使用技巧和注意事项,需要的朋友参考一下 前言 Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”。这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现;另一个优点是,可以像其他table一样操作这个table。为了便于实施这种操作,L