2013-02-21 163 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//