数据库连接和功能?

时间:2011-09-19 10:30:06

标签: php mysql function

我是新手使用功能,所以 - 请不要判断;)。

假设我在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}}

它可能看起来像一个相当愚蠢的问题,但我不确定连接/功能的范围。我觉得也许第二个例子可能是更好的练习,即使第一个例子有用吗?

任何评论,建议和答案将不胜感激! (我意识到我已经把这个问题搞得一团糟了,但我希望插图代码有所帮助,当然,如果你需要进一步澄清,请提出要求)!

3 个答案:

答案 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将使用最后打开的连接器,除非其他指定

总结,你的例子的第一个应该工作(没有检查解析等)。