[英]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.