我的PHP代碼有問題。我在MySQL數據庫中有一系列的列,PotVal,Current,ID,kWh和costKwh。其中ID是AUTO_INCREMENT,PotVal和Current來自文本文件 - 這些工作正常並且數據存儲良好。但我想採取PotVal,它實際上是感應功率,並使用(PotVal * 1)/(900)(不要擔心,我知道它的1000通常不是900)將其轉換爲KiloWatt小時數 - 這也工作正常,輸出數據實時,但我試圖將這個值存儲在我的千瓦時柱。接下來,我使用這個千瓦時柱子來計算每千瓦時的成本(千瓦時* 18.56)。但是由於沒有將數據存儲在kWh列中,我得到了0.00的輸出,我無法糾正它!PHP MySQL數據庫推拉
因此,總之爲什麼我無法存儲千瓦時?而且我想顯示的值爲小數點後兩位,但實際顯示的小數點後六位!
<?php
header('Refresh: 1.5');
// Set relevent pseudo-variables
$hostname = 'localhost';
$username = 'root';
$password = '';
$table = 'received_data';
$drop = 'DROP TABLE received_data';
$iwemsdatafile = 'IWEMSData.txt';
// Connect to MySQL
$dbconnect = mysql_connect($hostname, $username, $password)
or die('Unable to connect to MySQL: ' . mysql_error());
// echo 'Connected to MySQL<br>';
mysql_query($drop);
// Create database, table and columns
$cdb = 'CREATE DATABASE IWEMS_Data';
// echo 'IWEMS_Data has been created<br /><hr />';
$selectdb = mysql_select_db('IWEMSData',$dbconnect)
or die('Could not select IWEMSData');
// echo 'Connected to IWEMSData database<br />';
mysql_query($drop);
$ctb = 'CREATE TABLE received_data
(
Current DECIMAL(30,2) NOT NULL,
PotVal DECIMAL(30,2) NOT NULL,
kWh DECIMAL(30,2) NOT NULL,
costkWh DECIMAL(30,2) NOT NULL,
ID BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID,PotVal,Current)
)';
mysql_query($ctb, $dbconnect);
// echo 'Received_Data Table has been created<br />';
// echo 'Current, PotVal and ID columns have been created<br /><hr />';
// Push IWEMSData.txt data into MySQL database
mysql_query
('
LOAD DATA LOCAL INFILE "IWEMSData.txt"
REPLACE INTO TABLE received_data
FIELDS TERMINATED BY " "
LINES TERMINATED BY "\\r\\n"
(PotVal, Current)
;')
or die('Error Loading Data File.<br>' . mysql_error());
// Pull IWEMSData from MySQL database
$seldat = 'SELECT * FROM received_data ORDER BY ID DESC LIMIT 1';
$data = mysql_query($seldat)
or die('Error retrieving data: ' . mysql_error());
// Display data on web browser
while ($finalrow = mysql_fetch_array($data))
{
echo '<hr /> Apparent Power<br />';
echo $finalrow['PotVal'];
echo ' Watts';
echo '<br /><hr />';
echo 'Detected Current<br />';
echo $finalrow['Current'];
echo ' Amps';
echo '<br /><hr />';
}
// Display per kWh data on web browser
$perkWh = 'SELECT *, (PotVal/900) AS kWh
FROM received_data ORDER BY ID DESC LIMIT 1';
$qperkWh =mysql_query($perkWh) or die('Error');
while ($finalkWh = mysql_fetch_array($qperkWh))
{
echo 'kWh<br />';
echo $finalkWh['kWh'];
echo '<br /><hr />';
}
// Display cost per kWh data on web browser
$cperkWh = 'SELECT *, (kWh*18.67) AS costkWh
FROM received_data ORDER BY ID DESC LIMIT 1';
$cqperkWh =mysql_query($cperkWh) or die('Error');
while ($cfinalkWh = mysql_fetch_array($cqperkWh))
{
echo 'Cost kWh<br />';
echo $cfinalkWh['costkWh'];
echo '<br /><hr />';
}
// Close Database connection when complete
mysql_close($dbconnect);
?>
(我敢打賭那是一些簡單的...再次!)
你的插入語句在哪裏? – 2013-04-23 09:55:08
從你如何設置,你爲什麼需要第二個選擇?只需在PHP中進行計算:'$ finalkWh ['kWh'] * 18.67'?無論如何,你將查詢限制爲1,所以你不需要while循環,而且你不需要第二個查詢,因爲你擁有第一個的所有信息。 ^^ – Jon 2013-04-23 09:57:10
Yogesh感謝虐待不同的方法,並讓你知道我如何得到!謝謝你的建議。 – 2013-04-23 10:05:32