因此,我在php文件中有一条sql语句,该语句与从用户获取输入的表单有关。当他们输入流派时,它会更新该列中的所有记录,而不是他们选择的特定记录。
第一个代码是有效的原始语句,但是它编辑了整个列。因此,我一直在尝试其他条款,因此它仅更改了具有匹配album_id的条款,但没有任何运气。 Sample Table data
$sql = "UPDATE album
SET genre_id = (SELECT genre_id
FROM genre
WHERE genreName='" . $_POST['lstGenre'] . "'
)";
以上是我刚开始并继续讨论的内容。 Result from code above changes genre in entire column
$sql = "UPDATE album
SET genre_id = (SELECT genre_id
FROM genre
WHERE genreName='" . $_POST['lstGenre'] . "'
)
FROM album
WHERE album_id='" . $_POST['album_id'] . "'";
那是我尝试过的一个版本,但是它没有更新任何内容。 这是我在寻找的东西: Different genre for each case
我解决了这个问题:
$sql = "UPDATE album
SET genre_id = (SELECT genre_id
FROM genre
WHERE genreName='" . $_POST['lstGenre'] . "'
)
FROM album
WHERE album_id='" . $thisAlbum['album_id'] . "'";
答案 0 :(得分:0)
几乎,但是data <-
c('JENNIFER [Day 1, 9:00 A.M.]: Blablablablablablbalbllalbalbalbl. Balalalbablablabl.',
'SAM [Day 2, 10:15 A.M.]: Balblablablabalbalbalblabalblablabl. Balaldfkemfeke.',
'DAN\'S [Day 4, 12:00 P.M.]: DFnerke"dfsdf"')
无效,您只需要摆脱第二部分中的From部分。应该是这样的
Update ... From ... Where ...
编辑:而且,类似的子查询只需要拉一行。确保类型表中没有与提供的genreName相匹配的多行。如果是这种情况,虽然应该出现sql错误。
答案 1 :(得分:0)
您的查询应如下所示:
UPDATE album a
SET genre_id = (SELECT g.genre_id
FROM genre g
WHERE g.genreName = ?
)
WHERE a.album_id = ?;
?
是参数的占位符。您应该使用参数将值传递给查询,而不是用值来修饰查询字符串。