繁体   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