Php 将mysql连接作为参数传递时出错
我正在尝试用PHP和mysql构建一个基本API,根据url路径,使用不同的数据库表,因此需要建立连接。但我一直在犯这样的错误: 致命错误:对非对象调用成员函数prepare() 在……第6行 dashboard.class.php:Php 将mysql连接作为参数传递时出错,php,mysql,api,Php,Mysql,Api,我正在尝试用PHP和mysql构建一个基本API,根据url路径,使用不同的数据库表,因此需要建立连接。但我一直在犯这样的错误: 致命错误:对非对象调用成员函数prepare() 在……第6行 dashboard.class.php: class dashboard { public function getData($conn) { // Get latest status $stmt = $conn->prepare("SELECT status
class dashboard {
public function getData($conn) {
// Get latest status
$stmt = $conn->prepare("SELECT status FROM status_archive ORDER BY datetime DESC LIMIT 1 ");
$stmt->execute(); //line 6
$stmt->bind_result($status);
$stmt->fetch();
($status == '1' ? $status = 'up' : $status = 'down');
$stmt->close();
return $status;
}
}
创建数据库连接的函数:
function db_connection($type) {
$db = $type.'_db';
syslog(LOG_INFO, 'DB: '.$db);
// Check to see if a development or production server is being used
if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === false) {
$conn = mysqli_connect(null,
getenv('PRODUCTION_DB_USERNAME'),
getenv('PRODUCTION_DB_PASSWORD'),
$db,
null,
getenv('PRODUCTION_CLOUD_SQL_INSTANCE'));
} else {
$conn = mysqli_connect(getenv('DEVELOPMENT_DB_HOST'),
getenv('DEVELOPMENT_DB_USERNAME'),
getenv('DEVELOPMENT_DB_PASSWORD'),
$db);
}
// Check if successful connection to database
if ($conn->connect_error) {
die("Could not connect to database: $conn->connect_error " .
"[$conn->connect_errno]");
}
return $conn;
}
这是文件末尾启动所有操作的代码:
$path_array = explode("/", parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH));
$conn = db_connection($path_array[3]);
include 'classes/dashboard.class.php';
$dashboard = new dashboard;
$results = $dashboard->getData($conn);
echo json_encode($results, JSON_PRETTY_PRINT);
mysqli\u connect
可以返回falsy值。您应该使用OOP样式(
newmysqli
)或选中$conn
:
$conn = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$conn) {
die('Connection error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
-请参阅“程序样式”示例。
mysqli\u connect
可以返回falsy值。您应该使用OOP样式(
newmysqli
)或选中$conn
:
$conn = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$conn) {
die('Connection error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
-参见“程序风格”示例。结果表明,这是由可变范围造成的
最后,我使用PHP$GLOBALS使其工作。结果表明,这是由于变量作用域造成的
我最终使用PHP$GLOBALS使其工作。闻起来像是meCheck的可变范围错误。请参考以下链接,并将其应用于您的代码(查询和所有)。您是否尝试过使用
new mysqli
而不是mysqli\u connect
?var\u dump($conn)。查看$conn实际上是什么。您应该添加代码,确保$conn是PDO/MySQLi/whatever.scope的一个实例,并在meCheck中查找错误。请参考以下链接,并将其应用于您的代码(查询和所有)。您是否尝试过使用new mysqli
而不是mysqli\u connect
?var\u dump($conn)。查看$conn实际上是什么。您应该添加代码,确保$conn是PDO/MySQLi/where的实例。