我试图使用下面的php从数据库中返回一个整数值:
$result2 = mysql_query("SELECT dt.target FROM DEVICE_TARGET dt where dt.device_id='E1'");
$row = mysql_fetch_assoc($result2);
$target = $row["target"];
似乎什么也没有回报。我已在数据库上运行select并返回下面的预期值但由于某种原因,php无法收集相同的值。
mysql> SELECT dt.target FROM DEVICE_TARGET dt where dt.device_id='E1';
+--------+
| target |
+--------+
| 13 |
+--------+
1 row in set (0.00 sec)
答案 0 :(得分:0)
检查函数调用的结果,而不是简单地假设它们会成功。
if( ! $result2 = mysql_query("SELECT dt.target FROM DEVICE_TARGET dt where dt.device_id='E1'") ) {
echo 'query failed: ' . mysql_error();
} else if( ! $row = mysql_fetch_assoc($result2) ) {
echo 'no rows returned';
} else {
$target = $row["target"];
echo $target;
}
答案 1 :(得分:0)
首先不要使用他们已被弃用的 MySQL _ * 功能。切换为使用 PDO 或 MySQLi 。
现在关于这个问题:
检查您的连接,您的文件是否正确包含在连接数据库中?检查你的error_log你有任何错误吗?
可以运行像
这样的简单查询SELECT * FROM DEVICE_TARGET
答案 2 :(得分:0)
数据库连接或查询连接可能存在错误。 您可以使用mysql_error函数来检查错误。
答案 3 :(得分:0)
原来在同一个php文件中的存储过程以某种方式杀死了sql conntion。如果有人知道为什么我有兴趣知道。
$result2 = mysql_query("SELECT dt.target FROM DEVICE_TARGET dt where dt.device_id='E1'") ;
$row = mysql_fetch_assoc($result2);
$target = $row["target"];
$result = mysql_query("call get_reads(\"ELECTRIC1234\", \"2012-11-19 00:00:00\", \"2012-11-26 00:00:00\", \"Daily\")");
$values = array();
while ($row = mysql_fetch_array($result)) {
$val = $row['device_reading'];
$data = intval($val);
$mysqldate = $row['date_time'];
$phpdate = strtotime($mysqldate);
$str = gmdate("D d", $phpdate);
$values[$str] = $data;
}
存储过程看起来像这样
DELIMITER //
DROP PROCEDURE get_reads;
CREATE PROCEDURE get_reads (IN device varchar (20), IN start_date datetime, IN end_date datetime, IN read_type varchar(8))
BEGIN
SELECT dr.date_time, dr.device_reading
FROM DEVICE_DETAILS dd,
DEVICE_READING dr
WHERE dr.device_id = dd.device_id
AND dd.serial_number = device
AND dr.date_time BETWEEN start_date AND end_date
AND dr.reading_type = read_type;
END//