我的代码:
<?php
$conn = new MySQLi("localhost", "root", "", "barman");
function validate_details($user, $pass){
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
if($user==$row->user && isset($user)){
if($pass == $row->pass && isset($pass)){
return true;
}
}else{
return false;
}
}
?>
错误:
致命错误:在第8行的C:\ xampp \ htdocs \ barman \ assets \ login \ functions.php中的非对象上调用成员函数query()(第8行是$ result = $ conn-&gt ;查询($ SQL); )
答案 0 :(得分:6)
除了全局设置的变量或对象外,你不能使用函数之外的变量或对象。
尝试使用
function validate_details($user, $pass){
global $conn;
......................
}
答案 1 :(得分:2)
您正尝试从函数中访问在全局范围内创建的变量。
将$conn
变量作为参数传递给函数(这是首选选项),或使用global
keyword将其导入函数的范围。
所以你可以这样做:(首选选项)
function validate_details ($conn, $user, $pass) {
// function code goes here
}
// Call the function like this
$result = validate_details($conn, 'myuser', 'mypass');
......或者...... (不太好)
function validate_details ($user, $pass) {
global $conn;
// function code goes here
}
将连接对象作为参数传递更好的原因有很多,但这里有几个:
$conn
变量,则无需担心在函数中更改它我认为值得一提的是$GLOBALS
数组 - 这是一个superglobal(即它随处可用),你可以使用它,但实际上这与{{{{3}}没有多大区别。 1}}关键字,通常应该避免出于同样的原因。
您可以像这样使用它:
global
答案 2 :(得分:0)
使用global $conn
。否则它将无法工作。 :)