用php从mysql数据库返回单个整数

时间:2013-02-21 17:35:28

标签: php mysql

我试图使用下面的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)

4 个答案:

答案 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//