2016-11-04 21 views
0

我創建代碼,我正在更新一個表,其中一個json_encoded價值迴歸與此代碼Json_encoded值不更新數據庫

global $wpdb;  
$table_name = $wpdb->prefix . 'ab_payments'; 
$test = '{"items":[{"ca_id":1,"appointment_date":"2016-11-04 08:00:00","service_name":"wordpress developer","service_price":"10.00","deposit":"100%","number_of_persons":"1","staff_name":"admin","extras":[]}],"coupon":{"code":"5off","discount":"50","deduction":"0.00"},"customer":"admin"}'; 

$wpdb->query($wpdb->prepare("UPDATE $table_name SET details='$test' WHERE id LIKE '$paymentid'")); 

,但問題是它沒有更新的數據庫值。如果用簡單的文本替換值它的工作正常,但與測試json_encoded值不更新請幫助。

謝謝

+0

您正在傾銷任意數據而沒有轉義,這是行不通的。您需要[使用佔位符值正確地轉義您的輸入](https://codex.wordpress.org/Class_Reference/wpdb#Placeholders)使用WordPress數據庫層。 – tadman

+0

@tadman你只是寫了簡單的查詢測試,如果它的數據庫更新值,但它不工作。你在說我應該創建這樣的查詢: - $ metakey \t =「Harriet's Adages」; $ metavalue \t =「WordPress的數據庫界面就像星期日早晨:簡單。」; $ wpdb->查詢($ wpdb->製備( \t「 \t \t INSERT INTO $ wpdb-> postmeta \t \t(POST_ID,meta_key,meta_value) \t \t VALUES(%d,%S,%S ) \t」, 10, \t $ metakey, \t $ metavalue )); –

+0

是的,您使用像'%s'這樣的佔位符,WPDB庫負責處理其餘部分。 – tadman

回答

0

感謝@tadman其WordPress的佔位符需要更新與此json_encode代碼,以便更新的代碼並開始工作。

$wpdb->query($wpdb->prepare("UPDATE $table_name SET details=%s WHERE id=%d",$serialized,$paymentid));