所以我有两个数组,$ 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不解释内爆中的变量?我该如何解决这个问题?
答案 0 :(得分:1)
我怀疑$ cols的字面值'$Dlatitude', '$Dlongitude', etc...
。 PHP没有“双插值”字符串。它将用它的值替换$ cols,但不会用该变量的值替换$ Dlatitude。换句话说,您实际上是在数字字段中插入一些字符串 - 看起来像PHP变量名称。
$ gDatabaseKeyValues / Names数组中有什么?
答案 1 :(得分:0)
这可能是由于字符串/数字问题引起的。您应该考虑更改数据库引擎(考虑PDO)并使用预准备语句以正确的方式将参数绑定到查询。