|
|
|
| $sql = "INSERT INTO `content_right` (title, text, picture, pos)
VALUES ('$title', '$text', '$picture', (SELECT MAX(pos)+1 FROM content_right))";
$insert = mysql_query($sql);
В итоге такая ошибка:
You can't specify target table 'content_right' for update in FROM clause
Что не так? | |
|
|
|
|
|
|
|
для: neadekvat
(23.09.2009 в 22:44)
| | так нельзя ж писать в таблицу, из которой читаешь тем же запросом.
Обычно на автоинкрементное поле опираются в таких случаях. | |
|
|
|
|
|
|
|
для: Trianon
(23.09.2009 в 22:46)
| | В интернете нарыл такой способ
Тогда как реализовать то, что мне нужно?
Автоинкримент нельзя, он использован для id, а поле pos цифры могут менятся (используется для сортировки вывода) | |
|
|
|
|
|
|
|
для: neadekvat
(23.09.2009 в 22:47)
| | А я не сказал - использовать в лоб.
Я сказал - опереться на.
Вторым-третьим запросом брюки превращаются... превращаются.... | |
|
|
|
|
|
|
|
для: Trianon
(23.09.2009 в 22:52)
| | ... в жесть.
$arr = mysql_fetch_row(mysql_query("SELECT MAX(pos)+1 FROM `content_right`"));
$sql = "INSERT INTO `content_right` (title, text, picture, pos)
VALUES ('$title', '$text', '$picture', $arr[0])";
$insert = mysql_query($sql);
Ведь по-умнее можно как-то сделать? | |
|
|
|
|
|
|
|
для: neadekvat
(23.09.2009 в 23:03)
| | у вас записи есть в pos?
SELECT IFNULL(MAX(pos),0)+1 FROM content_right | |
|
|
|
|
|
|
|
для: neadekvat
(23.09.2009 в 23:03)
| | >... в жесть.
>
>$arr = mysql_fetch_row(mysql_query("SELECT MAX(pos)+1 FROM `content_right`"));
>
> $sql = "INSERT INTO `content_right` (title, text, picture, pos)
> VALUES ('$title', '$text', '$picture', $arr[0])";
> $insert = mysql_query($sql);
>
>Ведь по-умнее можно как-то сделать?
Это неустойчивый код.
Устойчивый будет INSERT , SELECT MAX(pos) ... WHERE id < SELECT_INSERT_ID() , UPDATE
А может и сложнее. | |
|
|
|