当我这样做我的DB连接:
$conn = new MySQLi(RUBYDBUSER, RUBYDBNAME, RUBYDBPASS, RUBYDBDATA);
if($conn->errno) {
throw new Exception($conn->connect_error, $conn->connect_errno);
}
我想发表一份事先准备好的声明
public function getSitename() {
$stmt = $conn->prepare("SELECT value FROM cms_options WHERE title = 'sitename' ");
$db->stmt_init();
$stmt->execute();
$stmt->bind_result($sitename);
if($stmt->num_rows > 0) {
while ($stmt->fetch) {
return $sitename;
}
}
}
我得到这个错误:
注意:未定义变量:Copyright © 2018 www.xampp.com All Rights Reserved.粤ICP备15044552号-1
查询在class.core.php
中,连接在global.php
中。Class.core是这样包含的:
(global.php)
foreach(glob(RUBY_BASE . '/app/includes/classes/class.*.php') as $class){
include_once($class);
}
有答案吗?”
4条答案
按热度按时间gjmwrych1#
变量
$conn
不在类方法的作用域中。您需要执行以下操作之一:A.)将$conn变量传递到要调用的方法中。
B.)在每个方法内部建立连接(这不是一个好的选择,因为您没有重用已建立的连接)
C.)使用静态定义使连接变量成为全局变量。可以在类的构造函数中设置,例如:
还有许多其他类似的变化,但它们是一般的方法
mf98qq942#
这是由于变量作用域,$conn是在函数外部定义的,所以或者你把它作为参数传递,或者你把它设置为全局的,或者你使用一个匿名函数。
pkbketx93#
如果$conn在同一个文件或任何其他文件中初始化,并且包含在定义
getSitename()
函数的文件中,那么您可以在函数中将$conn
变量标记为global,它将工作。q1qsirdb4#