不能将foreach循环生成的结果插入到mysql数据库中。 我提供了xml文件,其中包含一些细节,这些细节将帮助我生成下一代url来访问详细的产品xml文件。 我还在乞讨。 这是我的代码:
<?php
$xml=simplexml_load_file("http://www.website.com/categories/xml/list.xml") or die("Error: Cannot create object");
foreach ($xml->product as $product)
{
$sql = "INSERT INTO Software (groupId,codeId)
VALUES ('$product->attributes()->groupId,$product->attributes()->codeId')";
if ($conn->query($sql) === TRUE) {
echo "info added successfully";
} else {
echo "Error inserting into table: " . $conn->error;
}
}
$conn->close(); ?>
以下是我收到的错误消息:
创建表时出错:列数与第1行的值计数不匹配 创建表时出错:列数与第1行的值计数不匹配 创建表时出错:列数与第1行的值计数不匹配
我不确定我的语法是否错误,或者我必须以某种方式为每个结果生成特定值。
提前感谢您的回答。
答案 0 :(得分:1)
你只有一个大字符串,但应该有两个。尝试:
$sql = "INSERT INTO Software (groupId,codeId)
VALUES ('$product->attributes()->groupId','$product->attributes()->codeId')";
更好的方法是参数化。
$sql = "INSERT INTO Software (groupId,codeId)
VALUES (?, ?)";
更容易阅读,更安全。然后,您只需要bind变量$product->attributes()->groupId
和$product->attributes()->codeId
。
这是一个粗略的例子,(i
s用于整数,如果字符串变为s
s。每个变量一个字母):
$stmt = $conn->prepare($sql)
$stmt->bind_param('ii', $product->attributes()->groupId, $product->attributes()->codeId);
$stmt->execute();
您可以在此处阅读更多内容,http://php.net/manual/en/mysqli.quickstart.prepared-statements.php。