Значение AUTO INCREMENT для многопользовательского php mysql - PullRequest
0 голосов
/ 25 февраля 2012

Привет, ребята, я использую приведенный ниже код, чтобы получить значение MySQL автоматического увеличения его работает, как никогда когда более двух пользователей пытаются вставить строку из двух разных таблиц одновременно, все они получают один и тот же номер, что вызывает ошибку. есть ли способ решить эту проблему Большое спасибо за вашу помощь и идеи например, когда user1 получает последнее число 100 на insert.php в то же время user2 получает последний номер 100 на insert.php Большое спасибо за вашу помощь.

<input id="id" class="text-input small-input required" name="id" size="20" type="text" readonly="readonly" value="<?php $query = mysql_query( "SHOW TABLE STATUS LIKE 'a'" );
$results = mysql_fetch_object( $query );
echo $results->Auto_increment;
?>">  </p>

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012

Какого черта вы там делаете на стороне клиента?

Идентификатор пользователя не должен быть виден пользователю.Столбец id пользовательской таблицы должен быть установлен на автоинкремент.Вы можете сделать это в phpMyAdmin или как угодно.Когда пользователь создает учетную запись, INSERT, который создает запись пользователя, автоматически генерирует новый уникальный идентификатор пользователя, используя автоматически увеличивающееся поле «id».Затем вы можете получить последний идентификатор, созданный с помощью mysql_insert_id (), сразу после создания пользовательской записи.

1 голос
/ 25 февраля 2012

Не пытайтесь определить значение автоинкремента, если вы хотите вставить строку. Вместо этого не упоминайте столбец id в вашем операторе вставки, и база данных получит следующее значение автоматического увеличения, не вызывая конфликтов.

Если вы хотите узнать, какой идентификатор только что был вставлен, вы можете использовать mysql_insert_id() после запроса вставки. Это даст вам значение идентификатора строки, которая была только что вставлена.

...