-2

我试图从我的 XML 中获取这 4 个不同的属性并将它们转换为表数据。我已经设置了一个循环来输入信息。但是,当我尝试运行它时,我得到一个语法错误,意外的 T_STRING。我错过了什么?

foreach ($xml->machine as $machine)
{
   "INSERT INTO 'table' (id, filePointer, amount, description) VALUES ('%s', '%s', '%s','%s')",
    mysql_real_escape_string('$machine->id'),
    mysql_real_escape_string('$machine->images->image->filePointer'),
    mysql_real_escape_string('$machine->advertised_price->amount'),
mysql_real_escape_string('$machine>description'))
}
4

5 回答 5

1

除了没有实际调用 mysql_query 之外,您还有多个语法问题。

尝试这个:

foreach ($xml->machine as $machine)
{
   $sql = sprintf("INSERT INTO 'table' (id, filePointer, amount, description) VALUES ('%s', '%s', '%s','%s')",
     mysql_real_escape_string($machine->id),
     mysql_real_escape_string($machine->images->image->filePointer),
     mysql_real_escape_string($machine->advertised_price->amount),
     mysql_real_escape_string($machine->description)
   );

   mysql_query($sql);
}
于 2013-06-13T18:43:06.223 回答
1

让我们看看 mysqli 会是什么样子......

$db = new mysqli(hostname, username, password, database);
$stmt = $db->prepare("INSERT INTO table (id, filePointer, amount, description) VALUES (?, ?, ?, ?)");
) 
foreach ($xml->machine as $machine) {
    $stmt->bind_param('ssss', $machine->id, $machine->images->image->filePointer, $machine->advertised_price->amount, $machine->description);
    // Execute the query
    $stmt->execute();

}
$stmt->close();
于 2013-06-13T19:13:04.237 回答
1

可能是因为你实际上并没有对那个字符串做任何事情。您只是简单地在 PHP 代码中声明该字符串,而无需分配它或将其作为查询发送。因为您想为循环的每次迭代执行一个新查询,请尝试这样的操作。

$db = new mysqli(hostname, username, password, database);
foreach ($xml->machine as $machine)
{
    $db->query("INSERT INTO 'table' (id, filePointer, amount, description) VALUES ('%s', '%s','%s','%s')",
    $machine->id,
    $machine->images->image->filePointer,
    $machine->advertised_price->amount,
    $machine>description);

}

于 2013-06-13T18:48:50.573 回答
0

尝试这个...

foreach ($xml->machine as $machine)
{
 mysql_query("INSERT INTO 'table' (id, filePointer, amount, description) VALUES ('%s', '%s', '%s','%s')",
mysql_real_escape_string('$machine->id'),
mysql_real_escape_string('$machine->images->image->filePointer'),
mysql_real_escape_string('$machine->advertised_price->amount'),
mysql_real_escape_string('$machine->description'));

}
于 2013-06-13T18:44:10.137 回答
0

你错过了调用mysql_query函数来放入你的"INSERT INTO ...东西。

于 2013-06-13T18:42:38.743 回答