2013-03-15 3 views
-1

У меня есть идентификатор, заданный как столбец автоматического увеличения в моей таблице, и я пытаюсь скопировать данные, находящиеся в столбце id, в столбец user_id.Обновить столбец таблицы в то же время, что и запрос?

запрос ниже вставки данных и автоматическое приращение Идентификатор столбца, но тогда я хочу столбец идентификатор_пользователя иметь такое же значение как идентификатор, так что если идентификатор автоматическое приращение до 31, то идентификатор_пользователя также будет 31.

вот запрос я использую:

$query="INSERT INTO ptb_users (user_id, 
id, 
first_name, 
last_name, 
email) 
VALUES('NULL', 
'NULL', 
'".$firstname."', 
'".$lastname."', 
'".$email."' 
)"; 
$result = mysql_query("UPDATE ptb_users SET user_id=id"); 
mysql_query($query) or die(); 

проблема у меня есть это обновление/копия между идентификатором и user_id будет происходить только для этой текущей регистрации еще после регистрации пользователя/после того, как запрос побежал во второй раз.

поэтому скажите, что id 31 необходимо скопировать в столбец user_id, это не произойдет, пока другой пользователь не запустит второй запрос. если регистрация нового человека равна id 32, то обновление между id и user_id пользователя до (id 31) не будет выполняться до тех пор, пока идентификатор 32 не повторит/не выполнит запрос во второй раз.

Как я могу получить обновление с запросом или как только запрос будет завершен, так как когда id 31 регистрирует/запускает запрос, обновление между id и user_id происходит одновременно с запросом ?

Я бы предпочел иметь id и user_id как автоматическое приращение, но поскольку у него не возможно иметь два поля автоматического приращения, я пытаюсь дублировать результат автоматического увеличения с id на user_id, и мне нужно сделать это так, потому что мой код на моем сайте перекрестно ссылается на два столбца для обеспечения безопасности.

+0

HI, если идентификаторы пользователя и id всегда совпадают, не считаете ли вы его дублирование? возможно, объясняя причину того, что одно и то же значение в каждой строке дважды может помочь нам помочь :) – Martina

+0

Вы должны сделать столбец user_id как auto_increment. –

+1

Не знаете, почему вы хотели бы сделать это, если быть честным. – GarethL

ответ

-1

Выполнение запроса на обновление выполняется сначала, замените заказы на вызовы.

...  
mysql_query($query) or die(); 
$result = mysql_query("UPDATE ptb_users SET user_id=id"); 
... 

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

+0

Это будет работать, только я не уверен в производительности - вы говорите mysql, чтобы пройти через всю запись в этом запросе. Возможно, стоит добавить mysql_insert_id() в запрос и добавить к нему условие: mysql_query ("... WHERE id =". Mysql_insert_id ($ link_indentifier)); – Martina

+0

есть ли способ, чтобы я мог обновить его только для текущей записи, которая вставляется во время выполнения запроса? –

+1

@JamesTanner лучше всего было бы, если бы вы могли избежать двух равных значений в таблице - это не считается хорошей практикой – Martina

Смежные вопросы