2016-12-16 42 views
0

我使用WordPress的4.7,我有一些數據,並希望將它們插入我的數據庫使用全球$wpdb,但問題是,數據保存爲它保存在例如。 wp_post_meta表,如s:4:"asdf";s:2:"on";。 我以完全相同的方式使用此功能,並沒有此問題。有什麼改變或我做錯了什麼?

這裏是我的全碼:

$table_name=$wpdb->prefix.'products'; 

$wpdb->insert($table_name,array('name'=>$product_name,'price'=>$product_price,'size'=>$product_size,'status'=>$instore,'shortcode'=>'asdf'),array('%s', '%d','%s','%s','%s')); 

這是從數據庫返回的值,當我讀到它,所以你可以看到它是如何存儲在數據庫中

array (size=1) 
    0 => 
    object(stdClass)[700] 
     public 'id' => string '1' (length=1) 
     public 'name' => string 's:4:"asdf";' (length=11) 
     public 'price' => string 's:3:"234";' (length=10) 
     public 'size' => string 's:2:"on";' (length=9) 
     public 'status' => string 'N;' (length=2) 
     public 'shortcode' => string 'asdf' (length=4) 

正如你可以看到我沒有得到實際值,而是以s:前綴的值。我希望這些值能夠以簡單的方式存儲,並且不需要這些前綴。

這個var_dump()輸出的我$_POST

array (size=4) 
    'new-product' => string 'yes' (length=3) 
    'product-name' => string 'sdf' (length=3) 
    'product-price' => string '1' (length=1) 
    'product-size' => string 'on' (length=2) 

    $product_name=$_POST['product-name']; 
    $product_price=$_POST['product-price']; 
    if(isset($_POST['product-size'])){ 
     $product_size=$_POST['product-size']; 
    }else{ 
     $product_size='N'; 
    } 
    if (isset($_POST['instore'])){ 
     $instore=$_POST['instore']; 
    }else{ 
     $instore='N'; 
    } 
+0

看來,這不是一個WordPress的問題。你只需要這樣添加它們。 'echo $ product_name'的結果是什麼?正如你在添加shortcode =>'asdf'時看到的那樣。 – Ionut

+0

echo $ product_name;給出s:4:「asdf」;和btw。我直接從$ _POST變量中獲取它並插入到數據庫中。 – DevMan

+0

你能告訴我你放在'$ product_name'裏的東西嗎?我的意思是'$ product_name =你在這裏添加的東西?'。 – Ionut

回答

1

這是你在你的代碼的某個地方,這使得與變型一樣,返回的值使用serialize我看來。刪除應該解決您的問題。所以,如果您有:

$product_name = serialize($_POST['product-name']);

將其更改爲:

$product_name = $_POST['product-name'];

或者,如果你使用它的整個$ _POST像這樣:

serialize($_POST)

刪除它和它應該工作。

或者不必刪除serialize只是在插入數據庫之前使用unserialize($_POST['product-name'])

+0

我再次編輯了我的問題。拿掉最後一部分,你會看到我是如何處理$ _POST變量並將其直接發送到數據庫的。根本沒有序列化。 – DevMan

+0

這對我來說似乎很奇怪。從你發佈它應該工作得很好。有些東西你沒有顯示。 – Ionut

+0

你有我所有的代碼。對我來說也很奇怪。我認爲這是新的WP版本和API的變化? – DevMan

相關問題