2012-07-06 84 views
-7

不知道爲什麼,我使用函數substr()後,我無法更新我的價值數據庫,當我檢查數據庫中沒有值(空白)。我的查詢無法更新到數據庫後使用函數substr()

$result = '000603040000000000GL17KWJ10881011215000000000100'; 
$invoice = substr($result, 8, 20); //output 0000000000GL17KWJ108 

//update 
$sql="UPDATE `order` SET invoice_pbb='$invoice' WHERE order_id=108"; 
$result=mysql_query($sql); 

if($result){ 
    echo "Successful"; 
}  
else { 
    echo "ERROR"; 
} 

column = invoice_pbb
type = varchar (100)

*如果我改變與硬編碼的價值,我可以更新(不知道爲什麼)。

$invoice = '0000000000GL17KWJ108'; 

*我使用HTTPS

謝謝如果你能幫助我。

+3

'if(!$ result)die(mysql_error());' - 是否顯示任何內容? – deceze 2012-07-06 07:12:17

+0

請顯示錯誤。使用@deceze的方法可以這樣做 – jmishra 2012-07-06 07:13:09

+0

對不起,沒有錯誤。 – ruslyrossi 2012-07-06 07:14:48

回答

1

其實我看不到你的代碼明顯的錯誤,但我不知道的情況下,也許這個步驟可以幫助找到錯誤。

首先,我不會重用變量$ result,而是使用新變量。這樣可以避免誤解,如果某些代碼不能執行。

$queryResult = mysql_query($sql); 

然後最好正確檢查結果,因爲mysql_query()可以返回混合類型。注意===操作符,你不能用簡單的if語句可靠地檢查結果。

if ($queryResult === false) 
    echo "ERROR"; 
else 
    echo "Successful"; 

然後我會打開錯誤報告,這可能會給你一個關於實際問題的提示。

error_reporting(E_ALL); 

查看$invoice真正包含之前使用它來執行查詢。

var_dump($invoice); 

編輯:

只是一個建議多,絕對試圖找到另一個名稱爲您的表,使用保留字作爲表名,邀請所有的麻煩。

+0

謝謝,現在我知道什麼是錯的 – ruslyrossi 2012-07-06 08:07:26

+0

@ruslyrossi - 我們都很好奇這個問題是什麼,你能不能很快描述你是如何解決它的? – martinstoeckli 2012-07-06 08:11:15

+0

所有數據都來自包括髮票,信用卡等在內的表格,然後通過銀行再次通過我的網站,問題我忘了發送形式獲取新鮮數據,我只是刷新此頁面,希望所有數據都可以更新, m wrong..but for error_reporting(E_ALL); 都告訴我不要使用$結果兩次..現在所有的工作都很好。 – ruslyrossi 2012-07-06 08:18:35

-1

我認爲上述帖子是正確的。 $ sql =「UPDATE order SET invoice_pbb ='」。$ invoice。「'WHERE order_id = 108」;

因爲單引號中的變量名不會呈現任何值,因爲它通過characer讀取字符。

或者,

你可以檢查數據類型,長度等數據庫

+0

...雙引號字符串旨在讀取放置在裏面的任何變量。這根本不會改變任何東西。 – jared 2012-07-06 07:26:25

+0

@Shelim對不起,你認爲這個問題是因爲value來自substr()函數嗎?當我嘗試使用$ invoice ='0000000000GL17KWJ108';沒有問題的數據庫會更新。 – ruslyrossi 2012-07-06 07:29:53

+0

此外,您刪除了「訂單」周圍的勾號,所以您可能也會遇到語法錯誤。 – Braiba 2012-07-06 07:31:53