2016-08-13 4 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);'error.also' 'Date (') $ row [ 'UNIX_TIMESTAMP (tijdstempel)'] 대신'UNIX_TIMESTAMP 00035), '쓰기'배열 ( 'v'=> $ 행 [ '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) } 
관련 문제