Как узнать какой сейчас ключ будет выставлен записи, если я ее запишу. Если б у меня в таблице не было пропусков, то б я сделал count, а так не знаю даже. Помогите плз
После вставки значения вызывать Код (Text): SELECT LAST_INSERT_ID() или функцию PHP - mysql_insert_id
А если последние 10 id были удалены? Скажем, всего было 20 записей, посл. 10 удалили. Ваш запрос выдаст 11, а должно быть 21. Так ведь? Имхо, Mavir прав. Только это уже после вставки используется...
пока не вставишь - не узнаешь. если очень хочется знать - выставляй id руками. например, по предложенной выше формуле.
Думаю что сдесь могу задать свой вопрос, вроде бы по теме . . . У меня есть таблица, поля login и id_user есть форма, где пользователь пишет свой логин. Идея простая - нужно определить последний (max) id увеличить на 1, присвоить полученное число переменной и передать переменную в запрос : Код (Text): $query_user = "insert into user values( '".$id."', '".$login."' )"; Вопрос - как мне узнать max id и присвоить его переменной $id Вы выше писали запросы, но что потом и как все это по шагам делается ? Целый день сегодня голову ломал. . . Спасибо за ответы
Вот я решил проблему. Аж сам рад, что дошло. . . / Код (Text): /запрос, получение максимального значения id_user $create_q = "SELECT id_user FROM user";//построение запроса $query = $db->query($create_q);//сам запрос $result_id = $query->num_rows;//получаю результат - число столбцов $result_id++; //**// $create_q = "insert into user values( '".$result_id."', '".$login."' )"; $query = $db->query($create_q); if($query) { echo 'Ваш логин добавлен'.'<br/>'; } else echo 'Проверте данные логина'.'<br/>'; exit(); Конечно есть недостатки, если 2 или больше пользователя одновременно попытаются выполнить запрос, можно решить эту проблему как то ? И если есть еще недостатки этого запроса , скажите
Классический пример как НЕ НАДО делать. Видно непонимание основ. Ты хоть сортировку массивов когда-нибудь делал? Количество операций в цикле подсчитать можешь? 1) ты перебираешь всю базу, чтобы узнать количество записей. Это само по себе жуть, плюс тут только что показали что присвоенный ид не обязан быть количество строк+1. 2) чтобы узнать какой ид присвоен, используется команда mysql_insert_id() сразу после вставки. Этого достаточно для всех случаев жизни. Если тебе по религиозным соображениям надо узнать какой индекс будет вставлен заранее, то используй команду SHOW TABLE STATUS, чтобы узнать текущее значение автоинкремента. Но это не гарантирует, что будет вставлен именно он - между запросом на текущий ид и вставкой может вклиниться другой пользователь и вставить строку. Единственный способ гарантированно узнать ид - спросить mysql после вставки.