我的问题是以下...... 我制作了一些从mysql数据库中读取记录的php代码:
$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}引入 第71行的C:\ path \ to \ host.php
我很确定查询是正确的。那么我需要改变什么?
答案 0 :(得分:0)
在无效句柄上调用方法会产生这样的错误。始终检查您的连接请求是否成功并处理可能发生的任何错误。
启用mysqli
例外会使这些事情变得更加难以忽视。