簡體   English   中英

PHP Implode無法與mysql_query一起使用

[英]PHP Implode not working with mysql_query

所以我有兩個數組,$ gDatabaseKeyNames(列名列表)和$ gDatabaseKeyValues(變量名列表,包含腳本的值)。 變量名稱是動態生成的,因此我會跟蹤它們以進行插入。

我沒有列出所有列和值變量,而是嘗試了

$cols = implode(", ", array_values($gDatabaseKeyNames));
$vals = implode(", ", array_values($gDatabaseKeyValues));

$query = "INSERT INTO pings (survey_id, $cols) VALUES ('$surveyID', $vals)";                              
mysql_query ($query) or die(mysql_error());

但是我的實際值都沒有顯示在數據庫中(它們以0插入-我的所有列都是數字)。

如果我回顯$ query,則會看到此消息,這是正確的格式:

INSERT INTO pings (survey_id, latitude, longitude, pingTimestamp) VALUES ('15', '$Dlatitude', '$Dlongitude', FROM_UNIXTIME('$DtimeStamp'))

但是,如果我將$ query更改為

$query = INSERT INTO pings (survey_id, latitude, longitude, pingTimestamp) VALUES ('$surveyID', '$Dlatitude', '$Dlongitude', FROM_UNIXTIME('$DtimeStamp'));

它完美地工作!

為什么PHP不解釋爆破中的變量? 我怎樣才能解決這個問題?

我懷疑$ cols具有字面值'$Dlatitude', '$Dlongitude', etc... PHP不會“雙插值”字符串。 它將用其值替換$ cols,但不會用該變量的值替換$ Dlatitude。 換句話說,您實際上是在數字字段中插入一些看起來像PHP變量名稱的字符串。

$ gDatabaseKeyValues / Names數組中有什么?

這可能是由於字符串/數字問題引起的。 您應該考慮更改數據庫引擎(考慮PDO ),並使用准備好的語句將參數正確地綁定到查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM