2013-10-24 96 views
2

我剛剛開始使用PHP。 我正在從WordPress數據庫獲取信息。PHP數組自定義格式

插件將數據從註冊表單寫入數據庫。

我想要的是以我自己的方式獲取這些數據,比如說一個表格,在一個單獨的頁面上。

所以我已經做了,是連接到一個數據庫,並打印數據。該做的:

<?php 

    //connect to the database 
    mysql_connect ("host","user","pasw") or die ('Cannot connect to MySQL: ' . mysql_error()); 
    mysql_select_db ("database") or die ('Cannot connect to the database: ' . mysql_error()); 

    //query 
    $query = mysql_query("select id, data from wp_ninja_forms_subs") or die ('Query is invalid: ' . mysql_error()); 

    //write the results 

    while ($row = mysql_fetch_array($query)) { 
     echo $row['id'] . " " . $row['data'] . " 
    "; 

    // close the loop 
    } 

    ?> 

的事情是,我得到的結果,這並沒有真正適合我:

14 a:4:{i:0;a:2:{s:8:"field_id";i:2;s:10:"user_value";s:8:"John Doe";}i:1;a:2:{s:8:"field_id";i:4;s:10:"user_value";s:11:"+3706555213";}i:2;a:2:{s:8:"field_id";i:12;s:10:"user_value";s:9:"Company 1";}i:3;a:2:{s:8:"field_id";i:8;s:10:"user_value";a:1:{i:0;s:13:" Finansiniai ";}}} 15 a:4:{i:0;a:2:{s:8:"field_id";i:2;s:10:"user_value";s:10:"Bill Gates";}i:1;a:2:{s:8:"field_id";i:4;s:10:"user_value";s:11:"+5654412213";}i:2;a:2:{s:8:"field_id";i:12;s:10:"user_value";s:9:"Company 2";}i:3;a:2:{s:8:"field_id";i:8;s:10:"user_value";a:1:{i:0;s:13:" ?vaizd˛io ";}}} 16 a:4:{i:0;a:2:{s:8:"field_id";i:2;s:10:"user_value";s:7:"Person3";}i:1;a:2:{s:8:"field_id";i:4;s:10:"user_value";s:7:"6463213";}i:2;a:2:{s:8:"field_id";i:12;s:10:"user_value";s:9:"Company 3";}i:3;a:2:{s:8:"field_id";i:8;s:10:"user_value";a:2:{i:0;s:10:" HTML/CSS ";i:1;s:12:" Photoshop ";}}} 17 a:4:{i:0;a:2:{s:8:"field_id";i:2;s:10:"user_value";s:11:"Pretty Girl";}i:1;a:2:{s:8:"field_id";i:4;s:10:"user_value";s:9:"643122131";}i:2;a:2:{s:8:"field_id";i:12;s:10:"user_value";s:4:"Zara";}i:3;a:2:{s:8:"field_id";i:8;s:10:"user_value";a:1:{i:0;s:13:" ?vaizd˛io ";}}} 

現在,我希望看到的是一個表:

 

2013.10.25 Pretty Girl 643122131 Zara   Įvaizdžio 
2013.10.25 Person3  6463213  Company 3 HTML/CSS , Photoshop 
2013.10.25 Bill Gates +5654412213 Company 2 Įvaizdžio 
2013.10.25 John Doe +3706555213 Company 1 Finansiniai 

有人能告訴我,如何實現這一目標? 我相信,我的數據輸出是一個數組,或者我也錯了嗎?

如果是的話,也許有人可以給我一個例子如何格式化該數組的一部分,所以我可以做其餘的?

甚至還有一些關於谷歌什麼的暗示?

謝謝!

+1

你好,首先它看起來像一個序列化的字符串,沒有一個數組,根據你所查詢的表單,結果是可以的,我的問題是,爲什麼你使用mysql函數而不是wp db api?如果你建立一個插件,你將需要使用wp db api – Carlos

+0

'unserialize($ row ['data']); '和mb y,嘗試使用wp api,它更容易和更有用。 – DaunnC

+0

'unserialize()'將字符串解碼回php表單,但將其格式化爲'

'由您決定。做一個谷歌搜索「PHP格式的MySQL到表」或類似的。A – gwillie

回答

0

新行字符:)

您個人的值(a:4:{i:0....})使用"\n"已經 「系列化」。這是一個由四個元素組成的數組,它被傳遞給了PHP函數serialize()。該函數返回它的文本表示(即它已經「序列化」數組)。因此,您可以將整個數組作爲簡單文本保存在數據庫中的一個單元格中。

函數unserialize()做的相反 - 將「序列化」(文本)值和返回原始PHP對象(在這種情況下的數組)。

只要沒有附加任何「資源」,就可以序列化幾乎任何PHP對象。但是已經有一個單獨的問題了:What could cause a failure in PHP serialize function? 只要你序列化數字,字符串和數組的數組,甚至簡單的對象,沒有什麼可擔心的。

你的第一個單元格(第14號)unserilalized時:

array (
    0 => 
    array (
    'field_id' => 2, 
    'user_value' => 'John Doe', 
), 
    1 => 
    array (
    'field_id' => 4, 
    'user_value' => '+3706555213', 
), 
    2 => 
    array (
    'field_id' => 12, 
    'user_value' => 'Company 1', 
), 
    3 => 
    array (
    'field_id' => 8, 
    'user_value' => 
    array (
     0 => ' Finansiniai ', 
    ), 
), 
) 

(使用:http://www.functions-online.com/unserialize.html)運行這些槽一個for循環或收穫的人渲染你的需要,那取決於你。