函数,SQL连接和全局变量

时间:2012-11-14 21:17:43

标签: php sql function global

通过使用两者之间的mysql_query和mysql_fetch_array命令调用下面的函数来连接和关闭数据库是否有任何问题

<?php

function dbconnect()
{   
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    $connection = mysql_connect($sql, $username, $password) or 
    die("unwable to cct");
    $databse = mysql_select_db("-------", $connection); 
    global $connection;
}

function close()
{
    global $connection;
    mysql_close($connection);
}

dbconnect();
$query = "Some SQL Statement";
$data = mysql_query($query, $connection); - L1
while (mysql_fetch_assoc($data))
{
  //echo something 
}
close();
?>

目前,我收到一条错误消息,说L1处的$ connection需要是一个资源,但是是BOOL。如果我在那里给出一个模具声明,则会触发相同的声明。我不知道出了什么问题。请发现任何错误。我不得不从编码中休假,一段时间后我又回来了。

谢谢&amp;问候

4 个答案:

答案 0 :(得分:2)

在分配global变量之前,您必须使用$connection关键字。否则,您在函数内部声明一个本地$connection,然后调用对尚不存在的全局$connection的引用。在其他函数中,使用了不存在的全局。

function dbconnect()
{   
    // Global first to be sure the subsequent $connection is the global
    // rather than a new one local to this function
    global $connection;

    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    // Now this modifies the global $connection
    $connection = mysql_connect($sql, $username, $password) or die("unwable to cct");
    $databse = mysql_select_db("-------", $connection); 
}

更具可读性的是使用$GLOBALS数组:

function dbconnect()
{   
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";

    // Using the $GLOBALS superglobal array
    $GLOBALS['connection'] = mysql_connect($sql, $username, $password) or die("unwable to cct");
    $databse = mysql_select_db("-------", $GLOBALS['connection']); 
}

最重要的是从$connection返回dbconnect()并在其他功能中使用该值:

function dbconnect()
{   
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    $connection = mysql_connect($sql, $username, $password) or 
    die("unwable to cct");
    $databse = mysql_select_db("-------", $connection);

    // Return from the function
    return $connection; 
}

// call as 
$connection = dbconnect();
// and define your other functions to accept $connection as a parameter

答案 1 :(得分:1)

在调用mysql_connect()

之前声明全局$连接
function dbconnect()
{   
    global $connection;
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    $connection = mysql_connect($sql, $username, $password) or 
    die("unwable to cct");
    $databse = mysql_select_db("-------", $connection); 
}

答案 2 :(得分:0)

不太确定但请尝试使用

关闭它
mysql_Close($Connection);

其他一切看起来都不错

答案 3 :(得分:0)

只需将全局$ connection; 行放在函数的开头,就可以了。在函数末尾使用global关键字意味着您要使用全局变量$ connection。但是你现在要做的是,将全局变量$ connection命名为“实际的连接资源ID”。