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);'をスクリプトに ' 'Date '、')とそこにチェックしてください。 –

+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) } 
関連する問題