PHP教程给了我以下用于执行某个数据库搜索的代码。我把它放在content.php文件中,它正常工作
$query = "SELECT *
FROM subjects
ORDER BY position ASC";
$subject_set = mysql_query($query, $connection);
confirm_query($subject_set);
(注意,confirm_query函数是在include.php中访问的以下内容
function confirm_query($result_set){
if (!$result_set) {
die("Database query failed: " . mysql_error());
}
}
之后,教程告诉我(为了使其可重复使用)将$查询转换为include.php文件中的函数
因此,在include.php中我们做了这个
function get_all_subjects() {
$query = "SELECT *
FROM subjects
ORDER BY position ASC";
$subject_set = mysql_query($query, $connection);
confirm_query($subject_set);
return $subject_set;
}
接下来,我们通过在content.php文件中使用以下内容来访问此函数
$subject_set = get_all_subjects();
但是,现在它说“数据库查询失败”
所以将上面第一段代码移到include.php文件中会以某种方式影响查询
这是清楚的吗?
任何想法如何修复它?
答案 0 :(得分:2)
在函数中,
他不知道什么是$connection
变量,
将连接作为参数发送到函数
的一个选项function get_all_subjects($connection) {
..........
}
并调用函数
$subject_set = get_all_subjects($connection);
查看变量范围manual
这里
$a
变量将是 在包含的b.inc中可用 脚本。但是,在用户定义的范围内 函数是一个局部函数范围 介绍。内部使用的任何变量 函数默认限制为 本地功能范围。例如:
<?php
$a = 1; /* global scope */
function test()
{
echo $a; /* reference to local scope variable */
}
test();
?>
此脚本不会生成任何内容 输出因为echo语句 是指$ a的本地版本 变量,尚未分配 此范围内的值。你可以 注意这是一点点 不同于C语言 C中的全局变量是 自动可用于功能 除非被一个特别重写 本地定义。这可能会导致一些 人们可能会遇到的问题 无意中改变了全局 变量。在PHP中,全局变量必须 在函数内声明为全局 如果它们将被用于那个 功能
答案 1 :(得分:0)
啊呀..问题是在函数中你有本地的操作范围,所以不能引用范围之外的变量。它们是按值给出的。您可以将$ connection变量作为参数添加到函数中
答案 2 :(得分:-2)
如果db连接由单独的文件处理,即“connect.php”,则必须将其包含在所有后续函数中,如下所示:
require "./connect.php";