2013-04-10 146 views
0

因此,我使用CONCAT將2個字符串組合在一起,並希望通過將新字符串添加到現有字符串的末尾來更新數據庫中的TEXT字段。更新mysql字段變量不工作

// This code works great. will add "EXTRA" at end of the feed. 
$insert = ("update $username set feed = CONCAT(feed, 'EXTRA')"); 
mysql_query($insert); 

// This code doesn't work. not sure what to change in the variable area? 
$extra = "EXTRA"; 
$insert = ("update $username set feed = CONCAT(feed, '$extra')"); 
mysql_query($insert); 

我試過的變量聲明的許多變化,但似乎無法得到它就像我現在當我只是在一個字符串寫入工作。任何幫助或洞察力是讚賞。

謝謝!

+1

警告 這個擴展不贊成PHP 5.5.0,並且將被刪除未來。相反,應該使用MySQLi或PDO_MySQL擴展。另請參閱MySQL:選擇API指南和相關FAQ以獲取更多信息。 /php.net/ –

+0

你可以檢查打印'$ insert'準備的最終查詢是什麼?我認爲'$ extra'沒有被替換 – codeit

+0

是的。對於第一個代碼,它將打印「FEED EXTRA」,然後「FEED EXTRA EXTRA」,然後「FEED EXTRA EXTRA EXTRA」等。 對於第二個示例,Feed保持不變並且不更新或更改,因此將繼續打印相同的值。 「FEED」「FEED」「FEED」 – TonyCalamari

回答

0

我覺得你在這裏混了你的SQL:

"update $username set feed = CONCAT(feed, 'EXTRA')" 

$username = 表名稱

,看上去就像你可能希望它等於一定$username這將是更新領域:

"update TABLENAME set feed = CONCAT(feed, '$extra') WHERE username = '$username'" 
+0

我的表只是一個長行,所以我不需要WHERE用戶名= $用戶名。我只是使用$ username作爲表名。而且這個代碼在沒有變量的情況下效果很好,這似乎是需要以某種方式解決的問題。謝謝。 – TonyCalamari

+0

那麼這是否解決了您的問題?如果是的話標記爲答案。考慮使用清晰的變量名稱,而不是'$ username'表格名稱,它只是非常糟糕的形式。 – Jakub

+0

這並沒有解決問題。該字段不能用一個變量更新,只是一個直接的字符串,仍然不知道爲什麼。 – TonyCalamari

0

看示例查詢:

UPDATE table_name SET field1 = CONCAT(field1, "new data") WHERE field2 = value; 

,並調整您的需求。

+0

是的,這將正常工作,但如果我用「$ add」這樣的變量替換「新數據」,它將停止工作。 – TonyCalamari

0

得到了這個詞「額外」的飼料,我認爲你需要做的是這樣的結尾:

$insert = ("update $username set feed = CONCAT(feed, '" . $extra . "')"); 
+0

我已經在過去嘗試了這一點,現在再次使用這種確切的語法,並且我還沒有使用變量文本更新Feed。 – TonyCalamari