2017-08-18 58 views
0

我運行該SQL查詢的模擬:phpMyAdmin的影響零行,但模擬影響399

UPDATE wp_posts 
SET post_content = (Replace (post_content, 'src="http://', 'src="//')) 
WHERE Instr(post_content, 'jpeg') > 0 
     OR Instr(post_content, 'jpg') > 0 
     OR Instr(post_content, 'gif') > 0 
     OR Instr(post_content, 'png') > 0; 

匹配的行:399

其匹配的399行,但是當我執行它,它會影響爲零。

有沒有我看不到的錯誤?

+0

你提到了一種方法'替換()',它的一個用戶定義的方法? –

+0

猜測。但我假設模擬是運行選擇與他們where子句的結果。更新0表示行與您開始時的行相同。例如,在替換之後,行被更改。嘗試添加一個檢查instr('http://') – exussum

回答

1

請參閱本MYSQL Manual for the UPDATE statement - 它清楚地告訴...

如果設置爲它目前擁有中,MySQL注意到這一點,並不會更新它的值的列。

所以,如果你運行這個查詢,MYSQL會明白你要應用的值與指定列的當前值相同,並且它不會向數據庫寫入任何內容。這是你得到零的原因行受到影響...

+0

從REPLACE的這些示例中更新: http://www.sqlteam.com/article/using-replace-in-an-update-statement 它看起來我做得很對。 – Mauro

+0

@Mauro - 你的查詢是正確的... –