Случайно указанный странный SQL-запрос.Что случилось? - PullRequest
1 голос
/ 28 марта 2012

Я запустил этот sql-запрос в своей базе данных:

update payments set method = 'paysafecard' AND amount = 25 WHERE payment_id IN (1,2,3,4,5,...)

Конечно, я имел в виду set method = 'paysafecard' , amount = 25

Однако я сделал это в phpmyadmin, и он показал, что строки были затронуты.После повторного запуска было показано, что затронуто 0 строк.

Я не знаю, что могло измениться в базе данных, что это могло сделать?

Моя таблица выглядит следующим образом:

CREATE TABLE IF NOT EXISTS `payments` (
  `payment_id` int(11) NOT NULL AUTO_INCREMENT,
  `method_unique_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `method` enum('moneybookers','paypal','admin','wallet','voucher','sofortueberweisung','bitcoin','paysafecard','paymentwall') COLLATE utf8_unicode_ci NOT NULL,
  `method_tid` int(11) DEFAULT NULL,
  `uid` int(11) NOT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `plan` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `expires_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `amount` decimal(8,2) NOT NULL,
  `currency` enum('EUR','USD','BTC') COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`payment_id`),
  UNIQUE KEY `method` (`method`,`method_tid`),
  UNIQUE KEY `method_unique_id` (`method_unique_id`,`method`),
  KEY `expires_at` (`expires_at`),
  KEY `uid` (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8030 ;

Я работаю - Версия сервера: 5.1.41 - Версия PHP: 5.3.2-1ubuntu4.11

1 Ответ

5 голосов
/ 28 марта 2012

В результате для поля метода будет установлено значение «0» для всех ваших записей, соответствующих условию where.

Это интерпретируется как следующее:

set method = ('paysafecard' AND amount = 25)

Это логическое И, которое приводит к логическому значению для этих записей (которое будет проанализировано в соответствующем поле вашего столбца).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...