我需要将数组更新到mysql表中。
这是我的数组
[cat2] => Array
(
[0] => 34
[1] => 48
[2] => 49
[3] => 46
)
我希望我的输出为34,48,49,46,进入一个叫做商店和名为category的列的表。这是我写的代码,$ shop ['cat2']包含我在上面发布的数组。请帮我。此类代码在列类别
的所有字段中仅保留34个foreach ($shop['cat2'] as $k => $v) {
$query = "UPDATE shops SET categories2=$v";
mysql_query($query);
}
答案 0 :(得分:0)
查看implode函数:implode(",", $shop['cat2'])
您可能还想查看Foreign Keys。使用外键时,可以使用join
SQL语句从多列中检索数据。将类别存储为一个字段时,就像在您的示例中一样,这是不可能的。
您需要一个新表格:ShopCategory
包含列:ShopID
和CategoryID
,这些列与您的Shop
和{{有外键关系分别为1}}表。
正如Michael Berkowski在评论中已经指出的那样,如果你不使用Category
子句,这个SQL语句将更新所有商店的类别!
where
答案 1 :(得分:0)
为了将这些数组元素中的每一个应用到category
列的一行,您需要首先从shops
表中获取唯一ID,然后使用该表循环它更新查询的WHERE
子句中的唯一标识符值:
我们将在mysql_fetch_assoc()
循环内调用foreach()
来为每个数组元素拉一行。这假设您有一列shops.id
,这是每个商店的唯一标识符。
// If `id` is not the unique id per shop, substitute the correct column
$rowids = mysql_query("SELECT id FROM shops ORDER BY id");
if ($rowids) {
// Loop over your array, and do one update per array elem
foreach ($cat2 as $cat) {
$row = mysql_fetch_assoc($rowids);
$id = row['id'];
// Your values are ints, so no need to quote and escape.
// If you do use other string values, be sure to mysql_real_escape_string() them and single-quote
$upd = mysql_query("UPDATE shops SET category = $cat WHERE id = $id");
// Report error on this iteration
if (!$upd) {
echo "error updating $id" . mysql_error();
}
}
}
else {
echo "Couldn't get row ids. " . mysql_error();
}