【发布时间】:2016-05-18 19:16:23
【问题描述】:
我在新的 Ubuntu 服务器上从 php7 收到以下错误:
注意:试图在 ~/tLogServ.php 中获取非对象的属性 14
警告: mysqli::query(): Couldn't fetch mysqli in ~/tLogServ.php on line 17
致命错误:未捕获的错误:在 ~/tLogServ.php:18 中的 null 上调用成员函数 fetch_assoc() 堆栈跟踪:0 {main}在 ~/tLogServ.php 第 18 行
这是 tLogServ.php
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$request = json_decode( file_get_contents('php://input') );
$variable = $request->data;
// echo($variable);
$result = $conn->query("SELECT password FROM login where userID LIKE 'technician'");
$rows = $result->fetch_assoc();
$passHashed = $rows['password'];
if(password_verify($variable, $passHashed)){
$loginMess = "success";
}else{
$loginMess = "fail";
}
echo json_encode($loginMess);
$conn->close();
?>
还有我的连接脚本
<?php
DEFINE ('user', '$%^*(');
DEFINE ('pass', '^*&%*');
DEFINE ('host', '1*&^*&^');
DEFINE ('DB', '^*%*(&%^');
$conn = new mysqli(host, user, pass, DB) OR die('Fail Whale ' . mysqli_connect_error());
?>
该通知会随着输入而消失,但我不确定警告和它导致的致命错误。
此代码在带有 PHP5 的 Ubuntu 14 上运行没有问题。我已取消注释 扩展=php_mysqli.dll 在 php.ini 中。这显然是一个兼容性问题,但我不确定是否需要重新编写我的代码,或者这是我找不到的简单设置问题。
【问题讨论】:
-
查询是否返回结果?使用 PHP5 或 PHP7 时数据库是否完全一样?
-
你在哪里包含连接文件以及它前面的代码是什么? “无法获取”表明对象
$conn在您尝试此query()调用之前可能已关闭 -
第一个通知(尝试获取非对象的属性)可能是因为json_decode失败。 (从相对于mysql错误的行位置来看)
-
连接包含在 tLogServ 的其余部分之前 数据库应该相同。我从其中创建了一个 dumpFile 并从中创建了另一个。有没有办法进一步调查