将您的功能更改为:
function getContent($id, $conn) {
$sql = "SELECT content FROM blocktext WHERE id=$id";
if ($rs = $conn->query($sql)) {
if ($row = $rs->fetch_assoc()) {
echo stripslashes($row['content']);
}
$rs->close();
}
}
你没有声明“原创”$conn
在函数的范围内。在函数内部,您只能访问函数内部声明的变量或通过参数提供的变量。
另一种方法是将变量声明为global
在你的函数中:
function getContent($id) {
global $conn;
$sql = "SELECT content FROM blocktext WHERE id=$id";
if ($rs = $conn->query($sql)) {
if ($row = $rs->fetch_assoc()) {
echo stripslashes($row['content']);
}
$rs->close();
}
}
但只有在没有其他方法的情况下才应该这样做。全局变量使得调试和维护代码变得困难。
也可以看看变量范围 http://php.net/manual/en/language.variables.scope.php and 为什么全局变量不好 http://blog.case.edu/gps10/2006/07/22/why_global_variables_in_php_is_bad_programming_practice.
Edit:
是的,例如你可以有一个数据库类:
class DB {
private static $conn = null;
public static function getConnection() {
if (is_null(DB::$conn)) {
$host = "localhost"; $database = "dbname"; $username = "user"; $password = "pass";
DB::$conn = new mysqli($host, $username, $password, $database);
}
return DB::$conn;
}
}
当然这不是最好的实现;)但它应该给你正确的想法。然后就可以获取连接了:
DB::getConnection()