【问题标题】:MySQLi warning with php7php7 的 MySQLi 警告
【发布时间】: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.php18 行

这是 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 并从中创建了另一个。有没有办法进一步调查

标签: php ubuntu mysqli


【解决方案1】:

问题是两个愚蠢的错误。

1) 我在连接中引用的用户未获得适当的权限。

2) 'Host' 被定义为 localhost 的 IP。无论出于何种原因,这都适用于 Cat 连接,但不适用于 WiFI(两者都有静态 IP)。

对于其他有相同/相似问题的人。验证您的 php.ini mysqli 扩展是否已启用/取消注释。由于 A.L 遇到的问题是 mySQL 设置而不是 PHP/Ubuntu。

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2023-03-27
    • 2017-10-24
    • 2013-08-26
    相关资源
    最近更新 更多