![](/img/trans.png)
[英]Windows Php Fatal Error 'Soap Client' Extension is enabled, what am i doing wrong
[英]What am I doing wrong to get this fatal error
我的代码:
<?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-> query($ sql);)
除了全局设置的变量或对象外,不能使用函数之外的变量或对象。
尝试使用
function validate_details($user, $pass){
global $conn;
......................
}
您试图从函数内部访问在全局范围内创建的变量。
可以将$conn
变量作为参数传递给函数(这是首选),也可以使用global
关键字将其导入函数的作用域。
因此,您可以执行以下操作:(首选选项)
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
数组-这是可以使用的超全局变量 (即随处可用),但实际上,它与global
关键字并没有太大区别,出于相同的原因通常应避免使用。
您可以这样使用它:
function validate_details ($user, $pass) {
// ...
$result = $GLOBALS['conn']->query($sql);
// ...
}
使用global $conn
。 否则它将无法正常工作。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.