我的问题是以下...我制作了一些PHP代码,该代码从MySQL数据库中读取记录:
$host = $_SESSION['host'];
$username = $_SESSION['username'];
$password = $_SESSION['password'];
$db = $_SESSION['db'];
$con = mysqli_connect($host,$username,$password,$db);
$sql = "SELECT * FROM `table`";
$result = $con->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
...
}
}
我的html:
<button onclick="list">submit</button>
<div id="output"></div>
<script>
var thisHost = "host.php";
function list() {
$.ajax({
type: 'POST',
url: thisHost,
data: "list=true",
success: function(data)
{
$("#output").html(data);
},
error: function (responseData, textStatus, errorThrown)
{
console.warn(responseData, textStatus, errorThrown);
}
});
}
</script>
至于一切正常。但是,现在我想从另一个主机调用PHP代码。因此,HTML文件在另一个主机上(Localhost:81),PHP文件停留在旧主机上(Localhost:80)。
现在,我注意到我需要一些东西来跨越域,因为Ajax似乎与其他主机无法使用。因此,我所做的就是从头开始将这些行添加到PHP代码中:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
并将JavaScript中Thishost VAR的值更改为
"http://localhost:80/host.php"
之后,Ajax部分再次起作用和PHP响应。但是,每次我想通过这样的事情进行查询:
$sql = "SELECT * FROM `table`";
我会得到这个错误:
致命错误:未接收错误:呼叫null上的成员函数query() 在c: path to host.php中:71堆栈跟踪:#0 {main}扔进 C: path to host.php在第71行
上
我很确定查询正确。那么我需要更改?
在无效的手柄上调用方法将产生这样的错误。始终检查您的连接请求是否成功并处理可能发生的任何错误。
打开mysqli
例外使这些事情变得更加难以忽略。