我是新手使用功能,所以 - 请不要判断;)。
假设我在add_to_x()
中有一个function.php
函数,其中mysql_query()
执行include "function.php";
。包含此函数(script.php
)到function.php
,并在该脚本中途调用。在add_to_x()
的顶部,我建立了一个数据库连接,最后关闭它。
默认情况下会将其传递给函数add_to_x()
,还是需要在include "function.php";
// Do something
add_to_x($arg1, $arg2);
// Do something else
内建立和关闭连接?
为了说明和衡量标准:
script.php的内容
include "db_conn.php";
$conn = mysql_connect($db_host, $db_user, $db_pass); mysql_select_db($db_name);
function add_to_x($arg1, $arg2) {
// Do something
$query = "SELECT * FROM table WHERE x = '$arg1'";
$result = mysql_query($query);
}
mysql_close($conn);
function.php的内容
function add_to_x($arg1, $arg2) {
include "db_conn.php";
$conn = mysql_connect($db_host, $db_user, $db_pass); mysql_select_db($db_name);
// Do something
$query = "SELECT * FROM table WHERE x = '$arg1'";
$result = mysql_query($query)
mysql_close($conn);
}
那会有用吗?或者我需要做这样的事情:
{{1}}
它可能看起来像一个相当愚蠢的问题,但我不确定连接/功能的范围。我觉得也许第二个例子可能是更好的练习,即使第一个例子有用吗?
任何评论,建议和答案将不胜感激! (我意识到我已经把这个问题搞得一团糟了,但我希望插图代码有所帮助,当然,如果你需要进一步澄清,请提出要求)!
答案 0 :(得分:1)
包含脚本时,将执行function.php
(即不在函数内)的全局范围内的任何代码。因此,在您发布的代码中,$conn
将不再显示add_to_x()
。
答案 1 :(得分:1)
您可以在定义函数的文件中打开数据库连接,就像您一样。但是在function.php
结尾处关闭它是而不是你想要做什么 - 通过这样做你在使用它之前关闭连接。
您可以在主脚本的最后调用mysql_close()
(在所有调用需要连接的函数之后),或者根本不调用(当脚本完成时将隐式关闭/释放资源)
答案 2 :(得分:1)
很少有事情需要解释:
1)如果您在全局范围内定义了$conn
,则可以使用关键字global
从任何函数访问它,例如
function add_to_x(){
global $conn;
}
2)你可以在你的函数中使用mysql查询,即使连接是在“外部”,因为mysql将使用最后打开的连接器,除非其他指定
总结,你的例子的第一个应该工作(没有检查解析等)。