Mysql从XML插入,在字段名称中带有“连字符”

时间:2011-07-26 22:21:08

标签: php mysql xml insert

我正在尝试使用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

有谁能指出我做错了什么?谢谢!

2 个答案:

答案 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,' - '在方法名称中无效。