我跑在我的數據庫這個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
你可以運行一個'select * from payment where payment_id in(1,2,3,4,5 ...)'來查看改變了什麼嗎?那麼你應該能夠回答你自己關於變化的問題。基本上這被解釋爲'set method =('paysafecard'AND amount = 25)',它試圖將這兩個值合併在一起給出不好的結果。 – jzworkman 2012-03-28 18:57:55
或者'SELECT'paysafecard'AND amount = 25'顯示什麼?我想像某種布爾型轉換?編輯:看起來'方法'將被設置爲'0'我認爲... – 2012-03-28 18:58:44
我檢查了符合where子句的id,我看不到任何更改的數據。其餘的看起來不錯。據我所知沒有任何變化,但爲什麼然後受影響的行數... – 2012-03-28 19:02:26