我有一个我正在查询的数据库:"select email from users where access=1"
.我收到的错误是
致命错误:在线上的非对象上调用成员函数query():
$result = $mysqli->query($query);
我使用http://uk3.php.net/manual/en/mysqli.query.php作为参考,我无法看到我在哪里查询过程和面向对象的PHP混合.
<?php
$db_host = "";
$db_user = "";
$db_pass = "";
$db_name = "";
/* OOP MYSQLI DATABASE CONNECTION */
$db = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
/*LOGIN QUERY */
$query = "select email from users where access=1";
$result = $mysqli->query($query);
$email= $result->fetch_array(MYSQLI_NUM);
if(isset($email[0])){
$query1="select id from user where email='".$email[0]."' and facebook=1";
$result1 = $mysqli->query($query1);
$email1= $result1->fetch_array(MYSQLI_NUM);
$userId=$admin[0];
}
?>
Run Code Online (Sandbox Code Playgroud)
有人会介意解释吗?
您的MySQLi对象未命名$mysqli
,其名称为$db
$result = $mysqli->query($query);
Run Code Online (Sandbox Code Playgroud)
应该
$result = $db->query($query);
Run Code Online (Sandbox Code Playgroud)
同样如此
if ($mysqli->connect_error) {
Run Code Online (Sandbox Code Playgroud)
应该
if ($db->connect_error) {
Run Code Online (Sandbox Code Playgroud)
编辑
只是旁注,你的第二个查询完全没有任何意义:)你只是从该表中获取了一封电子邮件然后再次查询该电子邮件的同一个表格?
$email= $result->fetch_array(MYSQLI_NUM);
if(isset($email[0])){
$query1="select id from user where email='".$email[0]."' and facebook=1";
Run Code Online (Sandbox Code Playgroud)
所有设置都等同于您的第一个查询
select id,email from users where access=1 and facebook=1
Run Code Online (Sandbox Code Playgroud)
然后你不需要第二个查询