我见过几个人有同样的问题,但没有一个答案解决了我的问题。这就是我在三个文件中的内容:
的index.php:
$dbconnect = connectDB("mydb","connect");
mysqli_query($dbconnect,"INSERT INTO `mytable` (field1,field2) values ('value 1','value 2')");
connectDB("","kill",$dbconnect);
的functions.php
function connectDB($db_name,$connectorkill,$link) { include('connectDB.inc.php'); }
connectDB.inc.php
$host="localhost";
$user="myusername";
$pass="mypassword";
if($connectorkill == "connect") {
if($dblink = mysqli_connect($host, $user, $pass, $db_name)) {
echo "dblink created.";
return $dblink;
} else { echo "Error connecting to database."; }
} elseif($connectorkill == "kill") { mysqli_close($link); }
我得到的是:
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/username/public_html/members/index.php on line 2
看起来像connectDB函数没有完成它的工作,特别是在connectDB.inc.php中返回$ dblink变量。我继续将connectDB.inc.php中的代码移到functions.php中,它解决了问题,但我不希望它以这种方式设置。有没有办法解决这个错误?
答案 0 :(得分:1)
两种解决方案:
解决方案1 :根据以下内容对代码进行折射:
的config.php:
$config = array(
"databases" => array(
"my_database" => array(
"host" => "localhost",
"user" => "myusername",
"pass" => "mypassword"
)
)
);
的functions.php:
require("config.php");
function connectDB($dbname)
{
global $config;
if (!isset($config["databases"][$dbname]))
return; // error, database info not in $config
$dbc = $config["databases"][$dbname];
$dbcon = mysqli_connect($dbc["host"], $dbc["user"], $dbc["pass"], $dbname);
if (!$dbcon)
return; // unable to connect error goes here
return $dbcon;
}
请注意,这只是connectDB函数的最低要求。确实应该有更多的错误检查(例如,在每个$dbc
键上。它还需要正确的错误报告,这样,这只是正确方向的一般提示。
解决方案2 :在您的包含前添加return
function connectDB($db_name,$connectorkill,$link) { return include('connectDB.inc.php'); }
无论解决方案如何:真的需要在index.php中使用一些错误检查代码,因为无论你做什么:你的connectDB函数总是不会返回有效的数据库连接