我正在将PHP代码从mysql_转换为mysqli_。我的数据库连接位于常规代码的父文件夹中的单独文件“ conn.inc”中。其中的代码是::
function GetDBConn($host="localhost", $user="mydb", $pass="mypass", $db="mydb") {
return $dbconn = @mysqli_connect($host, $user, $pass, $db);
mysqli_close($dbconn);
}
在我的代码文件中,
include_once ("../conn.inc");
。
我有类似-
的代码$AuditInsertQ = mysqli_query(GetDBConn(),"INSERT INTO audit (userid, notes) VALUES (\"".$userid."\", \"".$notes."\")") or die("Error inserting row to Audit: ".mysqli_error($dbconn));
运行代码时,我收到一条消息::
PHP Notice: Undefined variable: dbconn in C:\...
我所看到的所有示例都将数据库连接与其引用的代码放在同一个文件中。当数据库连接位于另一个文件中时,如何引用它?我以为“ include_once”就是这样……?
答案 0 :(得分:2)
这段代码有很多错误,我什至都不知道从哪里开始。
mysqli_error()
GetDBConn()
这样的功能mysqli_close()
在连接后没有意义。多亏了return运算符,它却从未被调用die()
是有害的@
运算符有害我知道很难找到一个好的教程。互联网充满了糟糕的过时信息。我写的教程不错,但是Google并不知道它们很好,也不会向您展示。好吧,至少我可以在这里给我答复。
关于现代mysqli您必须了解的三件事
mysqli_error()
为了修正您的代码,
然后将代码重写为
include_once ("../conn.php");
$stmt = $mysqli->prepare("INSERT INTO audit (userid, notes) VALUES (?,?)");
$stmt->bind_param("ss", $userid,$notes);
$stmt->execute();
有关此代码中发生的情况的说明,请参阅我在how to run an INSERT query with mysqli上的教程
答案 1 :(得分:0)
在您的函数GetDBConn
中,它返回mysql资源,而不是为您定义$dbconn
变量。
使用类似mysqli_query($dbconn = GetDBConn(),"INSERT INTO audit ....
注意
function GetDBConn($host="localhost", $user="mydb", $pass="mypass", $db="mydb") {
return $dbconn = @mysqli_connect($host, $user, $pass, $db);
mysqli_close($dbconn);
}
$dbconn
仅在函数中可用,无法在函数外部访问,因此在此处进行定义是没有用的。
mysqli_close($dbconn);
将永远不会到达。