2014-01-29 113 views
0

我有一個表中有幾行,我正在查看一個名爲activeDeviceHandler的特定字段。有些值是實際文本,某些值不包含任何內容,即「」(不是NULL值)。爲什麼我的MySQL字段在更新時重置爲空?

我想只更新沒有字段值的行。我使用的查詢是:

UPDATE activeDevices SET activeDeviceHandler="hello world" 
    WHERE activeDeviceHandler="" 

此查詢的執行過程預計將在MySQL工作臺,但是當我在PHP執行查詢我場的所有值轉空,無論它們包含文本或沒有。

這是非常不尋常的。任何人都可以幫助或建議替代查詢嗎?我已經嘗試過

UPDATE activeDevices SET activeDeviceHandler="hello world" 
    WHERE (LENGTH(activeDeviceHandler) < 1) 

以及這產生相同的結果。

+0

問題幾乎可以肯定,問題出在您的PHP代碼中,而您不會在您的問題中顯示。 – eggyal

+0

顯示您的代碼! – Dave

回答

0

activeDeviceHandler是什麼類型的?如果它是一個枚舉,並將其設置爲一個不是枚舉成員之一的值,則最終會以空值/空值結束。例如:

mysql> create table foo (x enum('a','b')); 
Query OK, 0 rows affected (0.01 sec) 

mysql> insert into foo (x) values ('c'); // 'c' is not in the enum... 
Query OK, 1 row affected, 1 warning (0.00 sec) // note the warning here 

mysql> select x, length(x), isnull(x) from foo; 
+------+-----------+-----------+ 
| x | length(x) | isnull(x) | 
+------+-----------+-----------+ 
|  |   0 |   0 | 
+------+-----------+-----------+ 
1 row in set (0.00 sec) 
+0

這是怎麼解釋的?*這個查詢在MySQL Workbench中按預期執行,但是當我在PHP中執行查詢時,我的字段的值全部變爲null,無論它們是否包含文本或不包含*「? – eggyal

+0

不會是第一次有人在php vs.s中使用不同的dbs/tables。 phpMyAdmin的。 –

相關問題