gpt4 book ai didi

php - 为什么我的更新命令更新所有具有相同 ID 的字段?

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:56 25 4
gpt4 key购买 nike

使用更新命令,我想更改 type_name对于数据库中的特定条目,但它正在更改 type_name对于具有相同 type_id 的所有条目.

我只需要它来更改该个人条目的 type_name ,而不是 type_name与具有相同 type_id 的所有条目相关联.

我有一个更新查询:

$sql = 'UPDATE photos
LEFT JOIN types
ON photos.type_id = types.type_id
SET photos.photo_title = $_POST['photo_title'],
types.type_name = $_POST['type_name']
WHERE photos.photo_id = 3';

这是我正在使用的表格:

<form name="form1" method="post" action="">
<input name="photo_title" type="text" value=""/>
<textarea name="type_name"></textarea>
<input type="submit" name="update" value="Update entry" />
</form>

这是我的数据库结构:

餐 table 照片

  • photo_id 主键

  • 照片标题

  • type_id 外键

表格类型

  • type_id 主键

  • type_name

最佳答案

发生的情况是您的联接生成了错误的数据集。您正在加入 type_id 上的照片和类型。

现在您所描述的似乎是类型列可能包含具有相同类型___id 的多行。这是什么意思?这意味着您的联接将为每张照片生成多对 (photos,types)(具体来说,对于每张照片,联接将生成 n 行,其中 n 是具有与照片相同的 type_id)。

至于如何解决这个问题,你应该看看你的数据库设计。您似乎希望每张照片在类型中有一个独特的行。这种关系是如何表达的?这将使您能够为您的加入获得适当的 ON 子句。

更新

查看表结构后,您的数据库似乎表达的内容略有不同。就目前而言,您可以有多张相同类型的照片(即它们在照片表中的 typeid 是相同的)。因此,仅仅改变一张这样的照片的类型名称就有点毫无意义。您只是在更新特定类型的类型名称,它恰好是您也在更新其名称的照片的类型。

现在你到底想在这里实现什么?

  • 如果您尝试对特定照片进行重新分类,那么您可能想要在类型表中创建一个新条目并将您的照片指向该新记录,或者找到具有匹配名称的现有照片并将照片指向在那个记录。 (我假设你的照片插入逻辑中已经有这样的代码。这应该是相似的)
  • 如果您尝试更新照片的类型描述以及该类型的所有其他照片,那么您所拥有的就可以正常工作。

关于php - 为什么我的更新命令更新所有具有相同 ID 的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com