2016-05-18 73 views
0

我碰到PHP7一個新的Ubuntu服務器上的下列錯誤警告:庫MySQLi與PHP7


Notice: Trying to get property of non-object in ~/tLogServ.php on line 14

Warning: mysqli::query(): Couldn't fetch mysqli in ~/tLogServ.php on line 17

Fatal error: Uncaught Error: Call to a member function fetch_assoc() on null in ~/tLogServ.php:18 Stack trace:

0 {main}thrown in ~/tLogServ.php on line 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上沒有問題。我已取消註釋 extension = php_mysqli.dll in php.ini。這顯然是一個兼容性問題,但我不確定是否需要重新編寫我的代碼,或者如果這是我無法找到的簡單設置的問題。

+0

查詢是否返回結果?當您使用PHP5或PHP7時,數據庫是否完全相同? –

+2

你在哪裏包括連接文件和什麼代碼preceds這? 「could not fetch」表明在你嘗試這個query()調用之前可能已經關閉了對象'$ conn' –

+0

第一個通知(試圖獲取非對象的屬性)可能是因爲json_decode失敗。 (從相對於線位置判斷到MySQL錯誤) –

回答

0

這個問題是兩個愚蠢的錯誤。

1)我在連接中引用的用戶沒有得到適當的權利。

2) '主機' 被定義爲本地主機的IP地址。無論出於什麼原因,這在貓連接上工作,但在WiFI上沒有(都有靜態IP)。

對於具有相同/相似問題的其他人。驗證您的php.ini mysqli擴展是否已啓用/未被評估。由於A.L的問題是使用mySQL設置,而不是PHP/Ubuntu。