无意中指定了奇怪的sql查询。发生了什么?

时间:2012-03-28 18:54:40

标签: mysql sql

我在我的数据库中运行了这个SQL查询:

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

当然我的意思是设置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 个答案:

答案 0 :(得分:5)

这会导致所有适合where子句的记录的方法字段设置为“0”。

它被解释如下:

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

这是一个逻辑AND,并为这些记录产生一个布尔值(将被解析为列的相应字段)。