作者lazyhome (Hava A Nice Day)
看板PHP
標題Re: [請益] 一個簡單的語法請問 謝謝
時間Sat Apr 23 14:48:54 2011
※ 引述《goodtau (goodtau)》之銘言:
: 不好意思打擾了
: if($_POST["comm"] == "推薦此店家" and $oldip!=$ip or $sec>$oldsec+600){
: $sSql="UPDATE `store` SET `store_recommend` = 'store_recommend+1' WHERE
: `store_phone`='$p'";
: $result=mysql_query($sSql,$link);
: }
: 我想要做一個按了推薦按鈕
: 然後資料表內的推薦數就會+1
: 我翻了好幾本書
: 還是不知道為什麼我這樣寫
: 推薦數沒辦法+1
: 麻煩請大家指教了
: 謝謝
在mysql中, 有時資料表名稱或欄位名稱上不小心使用到關鍵字的話
在sql語法中會出錯
所以, 可以用`資料表`.`欄位` 來表示
以免發生錯誤
在此篇裡
$sSql="UPDATE `store` SET `store_recommend` = 'store_recommend+1' WHERE
`store_phone`='$p'";
`store_recommend` = 'store_recommend+1'
`store_recommend` 是欄位名稱 = 'store_recommend+1' <--這就是字串了
不管在PHP或是SQL語法裡, 用'(單引號)包起來的東西, 都是字串
假如 store_recommend 資料型態若是 int 時,
你若讓他等於 'store_recommend+1', 會是 0
所以, 你應該改成 `store_recommend` = `store_recommend` + 1
請注意到 ` 跟 ' 的不同
另外,在使用mysql時, 請善用 mysql_error() 來除錯
希望你在學PHP跟SQL語法時不要只會照著書打
要懂的他的用法,這樣在學習上才有幫助!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.124.82.43
※ 編輯: lazyhome 來自: 122.231.232.57 (04/23 20:53)
1F:推 goodtau:我改成` `結果還是不行ㄟ....? 04/23 23:26
2F:→ skywalking:檢查 store_recommend 欄位的資料型態, 要整數型態 04/24 02:56
3F:推 goodtau:是整數型態 04/24 08:49
4F:→ lazyhome:echo mysql_error($link); 看看有沒有問題 04/24 09:42
※ 編輯: lazyhome 來自: 122.231.232.57 (04/24 09:42)
5F:推 goodtau:試過了 沒有錯誤ㄟ... 04/25 00:54