2013-08-06 163 views
-1

我想實現的是30天添加到客戶訂購如果已經付款更新數據庫查詢

所以我用這個代碼

$set = "REPLACE into CLIENTS where USR_PAID = '1' and USR_EXPIRATION = DATE(DATE_ADD(NOW(), INTERVAL 0 DAY)) values ('USR_EXPIRATION','" . $due . "')"; 
$update = $conn->update($set, $db); 

我得到下面的語法錯誤

您的SQL語法錯誤;請檢查與您的MySQL服務器版本對應的手冊,以獲取在第1行'where USR_PAID ='1'和USR_EXPIRATION = DATE(DATE_ADD(NOW(),INTERVAL 0 DAY))值附近使用的正確語法。 聲明: REPLACE發展成客戶,其中USR_PAID = '1' 和USR_EXPIRATION = DATE(DATE_ADD(NOW(),INTERVAL 0天))VALUES( 'USR_EXPIRATION','09 -05-2013' )

我要告訴你,我我正在使用相同的功能來更新網站的不同部分的數據庫,並工作得很好。

另外,下面的查詢工作,並給了我所有已支付的客戶和今日到期:

$request = "select * from CLIENTS where USR_PAID = '1' and USR_EXPIRATION = DATE(DATE_ADD(NOW(), INTERVAL 0 DAY))"; 
$result = $conn->query($request, G_NORMDB); 

我想這僅僅是我無法找出語法錯誤。

+0

您現在在USR_PAID ='1'中添加一個字符,應該不是USR_PAID = 1還是USR_PAID = true? – Tdelang

回答

1

在附註中,我認爲這不會起作用,您不能使用replace into來選擇性地更改列。

這裏是手動的解釋:

值均列從 指定的值取REPLACE語句。任何缺失的列都將設置爲它們的默認值 值,就像INSERT所發生的那樣。您不能引用當前行的 的值,並在新行中使用它們。

所以你想包括整個用戶行。

我覺得它更容易只需使用此查詢:

$ Q =「UPDATE CLIENTS SET USR_EXPIRATION = '$由於' WHERE`USR_PAID = '1' AND USR_EXPIRATION = DATE(DATE_ADD(NOW(),INTERVAL 0天))「; $ update = $ conn-> update($ q,$ db);

讓我知道這對你有什麼用,如果它確實如此。

+0

非常感謝Mostafa,現在它工作..正如你可能明白我是PHP的新手! !謝謝大家幫助我。 – user926652

+0

沒有任何問題:)繼續工作,你會在那裏,我一直在使用PHP多年,仍然認爲我自己也是一個新手;) –

-1

怎麼樣從錯誤消息之後非常建議 - 檢查MySQL手冊上的語法爲REPLACE query?

+0

我已經做了很多次,正如我告訴過你,我已經在網站中多次使用替換查詢,並始終在工作 – user926652

1

你REPLACE語法是錯誤的。 VALUES,然後WHERE。

$set = "REPLACE into CLIENTS (the two columns here) VALUES ('USR_EXPIRATION','" . $due . "') where USR_PAID = '1' and USR_EXPIRATION = DATE(DATE_ADD(NOW(), INTERVAL 0 DAY))"; 

欲瞭解更多信息,請閱讀enter link description here的更多內容。

編輯:我很好奇在文檔中沒有看到WHERE。根據this answer,REPLACE沒有WHERE子句。改爲使用UPDATE。