2013-06-24 117 views
-2

我得到的消息:MySQL數據庫的SQL語法錯誤的PHP

You have an error in your SQL syntax;check the manual that corresponds 
to your MySQL server version for the right syntax to use near 
'12:00,25.32,1015.19,42.32,200.0,1.29,2.25,7.11,11.58,5.97,3.5,0.0,0.0,0.0,0.0,37' 
at line 2 

相關代碼:

$con = mysql_connect("127.0.0.1", "username", "password") or die(mysql_error()); 
mysql_select_db("database",$con) or die (mysql_error()); 

//readFmi() returns an array of strings with values separated by commas 
$array = readFmi($xml); 

$cols = 'date, Temperature, Pressure, Humidity, WindDirection, WindSpeedMS, 
MaximumWind, WindGust, DewPoint, TotalCloudCover, LowCloudCover, MediumCloudCover, 
HighCloudCover, Precipitation1h, PrecipitationAmount, RadiationLW, RadiationGlobal, 
RadiationNetTopAtmLW'; 

foreach($array as $a){ 
    $a2 = mysql_real_escape_string($a); 
    echo $a2."<br>"; 
    mysql_query("INSERT INTO forecastsFMI ($cols) 
    VALUES ($a2)") or die (mysql_error()); 
} 

mysql_close($con); 

$一個在打印時看起來像這樣

2013-06-24 12:00,25.32,1015.19,42.32,200.0,1.29,2.25,7.11,11.58,5.97,3.5,0.0,0.0,0.0,0.0,375.85,550.09,-260.6 

$的cols是完全相同與數據庫中的表中找到的相同,我現在將它們全部設置爲varchar,同時試圖找出我犯了我的錯誤的地方。我一直在計算數據庫和值的字段,看看是否出現錯誤,嘗試更改字符串本身的格式,並嘗試更改和調整代碼的不同部分,結果沒有任何差異。什麼可能導致這個?

謝謝 //托比亞斯

+1

看看錯誤信息中的第一件事。它說'12:00'。周圍沒有引號,而12:00不是一個有效小數的格式。 –

+0

把它們作爲字符串。換句話說 - 引用$ a2變量 –

+0

您也可以更好地使用反引號引用列名 - date是mysql中的保留字。 – andrewsi

回答

2

您需要添加字符串左右/日期列值引號中的字符串。所以在你的情況下,你特別需要類似的東西。

"2013-06-24 12:00",25.32,1015.19,42.32,200.0,1.29,2.25,7.11,11.58,5.97,3.5,0.0,0.0,0.0,0.0,375.85,550.09,-260.6 
+0

謝謝,解決了! – Gearbox