2015-07-21 3 views
1

Можно ли изменить несколько значений таблиц с помощью одного запроса sql? Например, в моей таблице с именем «информационный бюллетень» есть столбец с именем «получен», который имеет значение перечисления, которое по умолчанию равно 0. Когда я отправляю свой информационный бюллетень, это значение изменяется на 1, поэтому получатель не получает тот же адрес электронной почты дважды. Я хочу создать скрипт, который при анализе изменит все полученные значения на 0, поэтому я могу отправить другой информационный бюллетень. До сих пор я предоставляю свой PHP-код, и я уже тестировал ссылки и файл подключения к базе данных, поэтому подключение к базе данных не является проблемой.Как изменить несколько значений с помощью SQL?

PHP

include_once "connect_to_mysql.php"; 
$rec_value = mysql_query("SELECT * FROM newsletter WHERE received='1'"); 
$numRows = mysql_num_rows($rec_value); 
while($row = mysql_fetch_array($rec_value)){ 
    $email = $row["email"]; 
    if ($numRows == 1) { 
     mysql_query("UPDATE newsletter SET received='0' WHERE email='$email'"); 
    } 
} 

Может кто-то помочь мне изменить мой код так, что он устанавливает все полученные значения обратно в 0, когда этот скрипт выполняется? Благодаря!

+0

вы имеете в виду что-то вроде 'UPDATE бюллетень SET col1 = 'val1', val2 Col2 =» '... ' –

+2

[уверенный вы можете. 'UPDATE table SET col_x = '123', col_y = '456' WHERE col_z = 'xxx''] (https://dev.mysql.com/doc/refman/5.0/en/update.html) –

+2

, если хотите чтобы «изменить все полученные значения обратно на 0», просто удалите условие 'WHERE' -' UPDATE newsletter SET received = '0'' – Sean

ответ

3

Вы имеете в виду просто:

UPDATE newsletter SET received='0' 

MySQL не будет обновлять те строки, которые уже «0» и будет обновлять строки с другими значениями в «0 ».

Но если вы хотите быть более точным и обновлять только те строки, в которых полученные на самом деле '1':

UPDATE newsletter SET received='0' WHERE received='1' 
+0

Это работает отлично, как и другой ответ, но мне нравится, что вы добавили параметр, чтобы установить только 0, когда он установлен в 1, что гарантирует, что все получат письмо, даже если они будут подписаны позже. –

+0

Downvoter, позаботиться о том, чтобы объяснить? – GolezTrol

1

mysql_query("UPDATE newsletter SET received='0'"); сбросит все строки в 0.

+0

Это работает спасибо! –

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