2016-08-13 103 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) }