通过在两者之间使用 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。如果我在那里给出一个 die 语句,同样会被触发。我不知道出了什么问题。请尽可能找出任何错误。我必须从编码中休假,一段时间后我会回来。
感谢和问候
最佳答案
在分配 $connection
变量之前,您必须使用 global
关键字。否则,您将在函数内声明本地 $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']);
}
最好的方法是从 dbconnect()
返回 $connection
并在其他函数中使用该值:
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
关于php - 函数、SQL 连接和全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387485/