晚上好,今天我一直在尝试制定一个关于将我的xml数据提交到我的MySQL数据库的公式,这是我之前没有考虑过的事情,但我一直在努力尝试,但不幸的是不成功,我在第9行收到以下错误消息Parse error: syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in locations.php
请在下面找到我的xml文件,这是一个示例,我的PHP代码,如果有人能够帮助我真的很感激,非常感谢
XML
<?xml version="1.0" encoding="utf-8"?>
<datafile>
<data name="Area One">
<category>Place One</category>
<title name="One" size="100" color="red" />
<title name="Two" size="150" color="yellow" />
<title name="Three" size="200" color="pink" />
<title name="Four" size="250" color="green" />
<title name="Five" size="300" color="purple" />
</data>
<data name="Area Two">
<category>Place Two</category>
<title name="One" size="500" color="orange" />
<title name="Two" size="550" color="blue" />
<title name="Three" size="600" color="silver" />
<title name="Four" size="650" color="white" />
<title name="Five" size="700" color="gold" />
</data>
</datafile>
PHP
$xml = simplexml_load_file("locations.xml")
or die("Error: Cannot create object");
foreach($xml->children() as $data) {
echo $data->('data name') . ", ";
echo $data->category . ", ";
echo $data->('title name') . $data->('size') . $data->('color') . "<br>";
}
$sql = "INSERT INTO data (data-name, category, information)
VALUES ('', '', '')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $db->error;
}
我一直在尝试将xml文件中的每个数据名称插入到自己的mysql记录中 “数据名称”进入“数据名称” “类别”进入“类别”
当谈到“标题名称”,“大小”和“颜色”时,它们都共享“信息”字段,例如
"one, 100, red
two, 150, yellow
three, 200, pink
four, 250, green
five, 300, purple"
我提前道歉,如果我说的方式令人困惑,请随时问我任何问题,非常感谢
答案 0 :(得分:0)
首先,正如@ Fred-ii所述,
....
data-name
MySQL将其解释为data minus name
因此,请将列名更改为dataname
或符合您需要的内容以及有效的列名。
其次,语法错误是由于这些行,
echo $data->('data name') . ", ";
^^^^^^^^^^^^^
和
echo $data->('title name') . $data->('size') . $data->('color') . "<br>";
^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^
如果您计划将这些信息插入数据库表,那么您的foreach
循环应如下所示:
foreach($xml->children() as $data){
foreach($data->attributes() as $name){
$dataName = $name;
}
$category = $data->category;
foreach($data->title as $title){
$attr = array();
foreach($title->attributes() as $attribute){
$attr[] = $attribute;
}
$information = implode(",", $attr);
$sql = "INSERT INTO `data` (`dataname`, `category`, `information`) VALUES ('{$dataName}', '{$category}', '{$information}')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
包装所有内容的其他要点很少
data
是MySQL中的保留字,因此您不能将其用作查询中的表名。最好使用反引号来转义那些表名和列名。
以下是参考资料:
$db->error
应为$conn->error
。