PHP Implode不使用mysql_query

时间:2011-09-08 17:19:05

标签: php mysql

所以我有两个数组,$ 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不解释内爆中的变量?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我怀疑$ cols的字面值'$Dlatitude', '$Dlongitude', etc...。 PHP没有“双插值”字符串。它将用它的值替换$ cols,但不会用该变量的值替换$ Dlatitude。换句话说,您实际上是在数字字段中插入一些字符串 - 看起来像PHP变量名称。

$ gDatabaseKeyValues / Names数组中有什么?

答案 1 :(得分:0)

这可能是由于字符串/数字问题引起的。您应该考虑更改数据库引擎(考虑PDO)并使用预准备语句以正确的方式将参数绑定到查询。