我正在尝试使用PHP从xml插入到mysql中,但是字段名称包含“连字符”,并且由于某种原因它没有插入此字段,其余的都没问题。我尝试使用十六进制代码 x002D ,x2010,x2012,但没有一个有效。正如你在我的xml中看到的那样,连字符没有像空格那样被改变,但是如果我只是删除 x002D ,那么在“E”之后插入所有内容,换句话说就是插入-mail_x0020_Address。
这是我的xml:
<encuestas>
<ID>9949</ID>
<E-mail_x0020_Address>email@email.com</E-mail_x0020_Address>
<ZIP_x002F_Postal_x0020_Code>90001</ZIP_x002F_Postal_x0020_Code>
</encuestas>
这是我的插入语句(我删除了字段,我在那个xml上有20个):
"INSERT INTO New_Encuestas_Datos(ID,`email`,`Zip/Postal Code`) VALUES('$product->ID','$product->E-mail_x0020_Address','$product->ZIP_x002F_Postal_x0020_Code')";
变量来自一个读取xml的数组,就像我说的,除了电子邮件之外,所有内容都是导入的。我尝试了以下组合:
E-mail_x0020_Address
E_x002D_mail_x0020_Address
E_x2010_mail_x0020_Address
E_x2012_mail_x0020_Address
有谁能指出我做错了什么?谢谢!
答案 0 :(得分:2)
嗯,我怀疑你可以在字符串中使用它,但在普通PHP中它是$product->{'E-mail_x0020_Address'};
。但无论如何,这并不重要,因为你应该在将它们发送到数据库之前逃避你的值,你可以很好地命名一个转义变量。
答案 1 :(得分:1)
尝试使用:
"INSERT INTO New_Encuestas_Datos(ID,`email`,`Zip/Postal Code`) VALUES('{$product->ID}', '{$product->E-mail_x0020_Address}', '{$product->ZIP_x002F_Postal_x0020_Code}')";
<强>编辑:强>
在这里找到Validate class/method names with regex,' - '在方法名称中无效。