繁体   English   中英

MySQL从foreach结果插入变量

[英]mysql insert variables from foreach results

无法将从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行的值数不匹配

我不确定我的语法是否错误,或者我必须以某种方式为每个结果生成特定的值。

预先感谢您的回答。

您只有一个大字符串,但应该有两个。 尝试:

$sql = "INSERT INTO Software (groupId,codeId)
VALUES ('$product->attributes()->groupId','$product->attributes()->codeId')";

一个更好的方法将被参数化。

$sql = "INSERT INTO Software (groupId,codeId)
VALUES (?, ?)";

更容易阅读,也更安全。 然后,您只需要绑定变量$product->attributes()->groupId$product->attributes()->codeId

这是一个粗略的示例(如果字符串更改为s ,则i代表整数。每个变量一个字母):

$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上阅读更多内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM