2013-03-15 2 views
0

Я пытаюсь запустить 2 запроса на обновление как один результат $. Это возможно, и если да, то может кто-нибудь, пожалуйста, покажите мне, где я ошибаюсь в нижнем запросе?Как запустить два запроса обновления в одном?

$query = "INSERT INTO ptb_users (id, user_id, first_name, last_name, email, password) 
    VALUES('NULL','NULL','" . $firstname . "','" . $lastname . "','" . $email . "',MD5('" . $password . "'))"; 

mysql_query($query) or dieerr(); 
$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id UPDATE ptb_users SET ptb_users.account_type= \"Client\""); 
+0

как в стороне, функции PHP, начинающиеся с mysql_, устарели от PHP 5.5.0. Если вы в состоянии сделать это, попробуйте обновить свой код, чтобы использовать расширения MySQLi или PDO. – dnagirl

+0

'' NULL'' сохранит * буквальную строку * ''NULL'' в вашей базе данных. Если вы хотите «NULL», потеряйте кавычки. –

+1

Обратите внимание, что без предложения WHERE' ваш 'UPDATE' изменит все записи в таблице. – Mchl

ответ

0

Поскольку у вас нет WHERE положение о ваших UPDATE с, вы можете комбинировать их так:

UPDATE ptb_users SET ptb_users.user_id = ptb_users.id, 
    ptb_users.account_type = 'Client' 

EDIT: Если вы хотите UPDATE строку, вы просто INSERT-е изд, то просто добавьте WHERE ptb_users.id = $id (вы можете использовать mysql_insert_id(), чтобы получить ID).

$query = "INSERT INTO ptb_users (id, user_id, first_name, last_name, email, password) 
    VALUES('NULL','NULL','" . $firstname . "','" . $lastname . "','" . $email . "',MD5('" . $password . "'))"; 

mysql_query($query) or dieerr(); 
$id = mysql_insert_id(); 
$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id = ptb_users.id, 
     ptb_users.account_type = 'Client' WHERE ptb_users.id =".$id); 
+0

было бы возможно вставить предложение where или что-то, что заставляет это обновление сказать только обновление account_type для «client» для текущего выполняемого запроса? в противном случае это изменяет все параметры account_types в таблице, и я не хочу этого –

+0

@JamesTanner: Что вы подразумеваете под «текущим запросом»? Какую строку (ы) вы хотите обновить, с какими значениями? Если вы хотите, чтобы одна строка обновляла оба значения, просто добавьте '' WHERE 'column' = 'value''' * после * предложения' SET'. –

+0

есть два регистрационных формы на моем сайте один для участников и один для клиентов. этот запрос выполняется как часть формы регистрации для клиентов, значения вставлены и результат обновляет столбец, так что id = user_id, который бит отлично, бит, на который я хочу сосредоточиться, также нужен результат, чтобы сказать для этой конкретной регистрации/insert, где «Member» является значением по умолчанию для account_type в таблице, мне нужно, чтобы он обновился до «клиента» для этой регистрации. –

0

Функции Mysql * устарели. Вместо этого используйте PDO/mysqli.

В качестве меры безопасности функции mysql * не позволяют выполнять несколько запросов. Вы можете с помощью Mysql *, однако перед выполнением вы должны подготовить свое заявление.

+1

Не будет. 'mysql_query()' не может запускать несколько запросов – Mchl

+0

Хороший вызов. Я должен отменить эти заявления. Использовать mysqli THEN поставить точку с запятой ... –

+0

@DevinYoung: Я * очень * сомневаюсь, MySQLi позволит вам запускать несколько запросов в одной команде. –

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