2

通过在两者之间使用 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 声明,同样会被触发。我不知道出了什么问题。请尽可能找出任何错误。我必须从编码中休假,一段时间后我回来了。

感谢和问候

4

4 回答 4

2

您必须在分配变量之前global使用关键字。否则,您在函数内部声明一个 local ,然后调用对尚未存在的 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
于 2012-11-14T21:35:22.303 回答
1

在调用 mysql_connect() 之前声明全局 $connection

function dbconnect()
{   
    global $connection;
    $sql = "localhost"; 
    $username = "------";
    $password = "-----";
    $connection = mysql_connect($sql, $username, $password) or 
    die("unwable to cct");
    $databse = mysql_select_db("-------", $connection); 
}
于 2012-11-14T21:35:44.767 回答
0

不太确定,但尝试使用关闭它

mysql_Close($Connection);

其他一切看起来都不错

于 2012-11-14T21:31:50.847 回答
0

只需将全局 $connection; 改为在函数的开头行,它应该可以工作。在函数末尾使用 global 关键字意味着您要使用全局变量 $connection。但是您现在要做的是,分配全局变量 $connection “实际的连接资源 ID”。

于 2012-11-14T21:42:53.930 回答