我收到此错误。 我知道有很多类似的问题,但我找不到任何有用的东西(可能是我的错)。
function connect(){
$host = 'localhost';
$db = 'db1';
$user = 'user';
$pwd = 'userpwd';
return new mysqli($host, $user, $pwd, $db) or die('Cannot connect to database');
}
$dbconnection = connect();
$sql = 'SELECT * FROM users';
$queryResult = $dbconnection->query($sql);
这最后一行回到我说的错误。 这是一个非常简单的功能,我仍然不知道我做错了什么。
答案 0 :(得分:4)
您遇到了运营商优先问题。您的return
实际上返回的是new ... OR ...
的布尔值,而不是您刚刚实例化的对象。尝试:
$con = new mysqli(...) or die(...);
return $con;
代替。
跟进:
function foo() {
return 'foo' or die('failed');
}
function bar() {
return false or die('failed');
}
var_dump(foo()); // outputs "bool(true)", not 'foo'
var_dump(bar()); // script exits with 'failed'
返回捕获foo OR bar
的结果,并返回布尔值true / false。 OP的连接语句为WORKED(或者它会有die()'d)。然后返回的对象是or
'并生成一个布尔值的真实结果,然后return
编辑。
答案 1 :(得分:0)
您不需要使用功能 而是直接实例化mysqli连接。 这很有效。
ini_set('display_errors',1);
$host = 'localhost';
$db = 'dbname';
$user = 'root';
$pwd = 'password';
$connect = new mysqli($host, $user, $pwd, $db) or die('Cannot connect to database');
$sql = 'SELECT * FROM users';
$queryResult = $connect->query($sql);
foreach ($queryResult as $user) {
echo $user['id'];
}