2013-02-21 158 views
0

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

而且你确信你的mysql数据库连接和使用? (即,您是否可以同时执行其他查询并获取有效信息?)还可以尝试在'DEVICE_TARGET'和'dt'之间插入'as'。 – 2013-02-21 17:39:27

+0

连接工作,因为早先在我的PHP中有另一种方法工作。 – DavidM 2013-02-22 12:43:17

回答

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; 
} 
0

首先,他们已经被弃用所有请勿使用MySQL_ *功能。切换为使用PDOMySQLi

现在这样一个问题:

检查连接,为您的文件中包含正确连接到数据库?检查你的error_log你有任何错误?

,可以在运行像

SELECT *简单的查询FROM DEVICE_TARGET

+0

原来在同一个php文件中的存储过程以某种方式或其他方式正在查杀sql conntion。如果有人知道我为什么有兴趣知道。 – DavidM 2013-02-22 15:14:31

0

可以有数据库连接或查询连接的错误。 您可以使用mysql_error函数来检查错误。

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