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);
추가'error_reporting (E_ALL)을, 위해서는 ini_set ('display_errors를', 1);'error.also' 'Date (') $ row [ 'UNIX_TIMESTAMP (tijdstempel)'] 대신'UNIX_TIMESTAMP 00035), '쓰기'배열 ( 'v'=> $ 행 [ 'unixtime'];), 또한 누락 된';'을 추가하고 체크 –
제안 해 주셔서 감사합니다. 그러나 오류가 없습니다. r 던져. 누락 된';'은 누락 된 것이 아니라 배열에있는 배열이므로 초기'array()'뒤에'; '만 필요합니다. – Yokovaski
더 나은 오류보고가 필요하지만 mysqli는 오류를 발생시키지 않으므로 폴링을해야합니다. 연결을 확인했으나 쿼리를 실행 한 후 오류를 확인한 경우 "선택한 데이터베이스가 없음"을 보았을 수 있습니다. – symcbean