PDO вставка max id + 1 не auto_increment - PullRequest
0 голосов
/ 06 сентября 2018

Я не хочу использовать автоинкремент mysql, но я хочу получить максимальный идентификатор + 1 для вставки в качестве идентификатора для следующих данных.

Я пытался сделать как Как получить идентификатор автоматического увеличения с помощью PDO перед выполнением Но не повезло.

$sql = "INSERT INTO checklist ((SELECT MAX(checklist_id)+1), checklist_name ) VALUES (NULL, :checklist_name)";

$pdo_statement = $pdo_conn->prepare( $sql );

$result = $pdo_statement->execute ((array(':maxid'=>NULL,':checklist_name'=>$_POST['checklist_name']));

Не могли бы вы помочь мне, какой код должен быть?

1 Ответ

0 голосов
/ 06 сентября 2018

Редактировать: как один из комментаторов указал выше; не рекомендуется не иметь первичного ключа в вашей базе данных MySQL

Ваш SQL-запрос неверен. Вы должны иметь столбцы и значения отдельно.

$ sql = "INSERT INTO checklist ((SELECT MAX (checklist_id) +1), checklist_name) VALUES (NULL,: checklist_name)";

Чтобы сделать правильное утверждение INSERT, посмотрите документацию

INSERT INTO table (column, column, etc.) VALUES (value, value, etc.)

Таким образом, чтобы сделать ваше утверждение правильным, вам придется переключить некоторые переменные

INSERT INTO checklist (checklist_id, checklist_name) VALUES ((SELECT MAX(checklist_id)+1 FROM checklist), :checklist_name)

И ваш массив с вашими значениями привязки будет выглядеть так

array(':checklist_name' => $_POST['checklist_name'])

Если у вас есть проблемы с любым синтаксисом SQL, вы можете посмотреть документацию или w3schools .

...