查询不会返回任何记录,但phpmyadmin会返回
问题描述:
我无法查询数据库的结果。当我在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);
答
以及它必须有一些数据问题。
你的代码在这里工作很好,只需稍作更改(查看第一个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) }
附加'使用error_reporting(E_ALL);函数ini_set( '的display_errors',1);在''开始 $ row ['unixtime'];),'也加上缺少';'那里检查 –
感谢您的建议,但没有错误r抛出。缺少的';'不会丢失,它是一个数组中的数组,因此只需要在初始'array()'后面的'''。 – Yokovaski
您确实需要更好的错误报告 - 但mysqli不会抛出错误 - 您需要对它们进行轮询。您已检查连接的工作情况,但如果您在运行查询后检查了错误,则可能看到“未选择数据库” – symcbean