2016-08-13 104 views
1

我無法查詢數據庫的結果。當我在phpmyadmin中輸入查詢時,它完美地工作。但在php中執行完全相同的查詢不會返回任何結果。查詢不會返回任何記錄,但phpmyadmin會返回

我已經在互聯網上搜索了很長一段時間,但到處都是我發現這種查詢投票的最佳答案。也許我錯過了一些東西,你們可以幫助我。

查詢:

SELECT current_consumption, current_delivery, UNIX_TIMESTAMP(timestamp) FROM energydata WHERE timestamp > DATE_SUB(NOW(), INTERVAL 1 HOUR); 

PHP:

<?php 
include "database.php"; 

$limit = (int)$_GET["limit"]; 

// Create connection 
$conn = new mysqli($servername, $databaseUser, $databasePassword, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT current_consumption, current_delivery, UNIX_TIMESTAMP(timestamp) FROM energydata WHERE timestamp > DATE_SUB(NOW(), INTERVAL 1 HOUR)"; 
$result = $conn->query($sql); 

$json = array(); 

if ($result->num_rows > 0) { 
    $columns = array(
     array(
      'id' => 'date', 
      'label' => 'Date', 
      'type' => 'datetime'), 
     array(
      'id' => 'consumption', 
      'label' => 'Consumption', 
      'type' => 'number'), 
     array(
      'id' => 'delivery', 
      'label' => 'Delivery', 
      'type' => 'number') 
     ); 

    $rows = array(); 

    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $date = array(); 
     $date = date_parse($row['timestamp']); 

     $currentRow = array(
      'c' => array(
       array(
        'v' => 'Date('. $row['UNIX_TIMESTAMP(timestamp)'] .'000)' 
       ), 
       array(
        'v' => $row['current_consumption'] 
       ), 
       array(
        'v' => $row['current_delivery'] 
       ) 
      ) 
     ); 

     array_push($rows, $currentRow); 
    } 

    $json = array(
     'cols' => $columns, 
     'rows' => $rows); 
} 

echo json_encode($json); 
+0

附加'使用error_reporting(E_ALL);函數ini_set( '的display_errors',1);在''開始 $ row ['unixtime'];),'也加上缺少';'那裏檢查 –

+0

感謝您的建議,但沒有錯誤r拋出。缺少的';'不會丟失,它是一個數組中的數組,因此只需要在初始'array()'後面的'''。 – Yokovaski

+0

您確實需要更好的錯誤報告 - 但mysqli不會拋出錯誤 - 您需要對它們進行輪詢。您已檢查連接的工作情況,但如果您在運行查詢後檢查了錯誤,則可能看到「未選擇數據庫」 – symcbean

回答

0

以及它必須有一些數據問題。

你的代碼在這裏工作很好,只需稍作更改(查看第一個var_dump)。

$conn = new mysqli("localhost:3308", "root", "", "testit"); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$sql = "SELECT UNIX_TIMESTAMP(bill_date) FROM bills WHERE bill_date > DATE_SUB(NOW(), INTERVAL 1 HOUR)"; 
$result = $conn->query($sql); 
while($row = $result->fetch_assoc()) { 
    var_dump($row["UNIX_TIMESTAMP(bill_date)"]); 
} 
var_dump($result); 

輸出爲:

string(10) "1489741452" 
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) }