-1

という名前のテーブルがありますlisting_fees

idでデータを取得したい12

取得したいデータBLOB[BLOB - 205B]

ファイル内にBLOBは、次のような配列があります。

a:7:{s:2:"id";s:1:"1";s:5:"label";s:8:"For Sale";s:6:"amount";s:4:"0.00";s:4:"days";s:1:"7";s:6:"images";s:1:"0";s:10:"categories";a:2:{s:3:"all";i:0;s:10:"categories";a:1:{i:0;i:30;}}s:10:"extra_data";N;}

私はこのコードのことを理解していません。

PHPを使用してhtmlのフロントエンドに表示したい

何を表示しますか?

SQL クエリなど。

4

2 に答える 2

3

そのデータはPHPシリアライズ形式であり、 unserializeを使用してデコードできます

$data = 'a:7:{s:2:"id";s:1:"1";s:5:"label";s:8:"For Sale";s:6:"amount";s:4:"0.00";s:4:"days";s:1:"7";s:6:"images";s:1:"0";s:10:"categories";a:2:{s:3:"all";i:0;s:10:"categories";a:1:{i:0;i:30;}}s:10:"extra_data";N;}';
$data = unserialize($data);

echo "<pre>" ;
foreach ( $data as $key => $value ) {
    if ($key == 'categories') {
        echo $key, " = ", $value['categories']['0'], PHP_EOL;
    } else {
        echo $key, " = ", $value , PHP_EOL;
    }
}

出力

id = 1
label = For Sale
amount = 0.00
days = 7
images = 0
categories = 30
extra_data = 
于 2012-10-04T02:04:52.350 に答える
1

BLOB列のデータは、ファイルではなくシリアル化されたデータのようです。このため、単にページに「出力」するのではなく、(PHP のunserialize()メソッドを使用して) シリアル化を解除してから、表示されるように処理する必要がありますが、表示する必要があります。質問に表示する正確なunserialize()データを取得し、それを使用して渡すと、次の配列が得られます。

Array
(
    [id] => 1
    [label] => For Sale
    [amount] => 0.00
    [days] => 7
    [images] => 0
    [categories] => Array
        (
            [all] => 0
            [categories] => Array
                (
                    [0] => 30
                )

        )

    [extra_data] =>
)

データベースにクエリを実行して列を取得するための簡単な設定は次のとおりです。

$mysqli = new mysqli('localhost', 'username', 'password', 'db');
$result = $mysqli->query('SELECT column_name FROM listing_fees WHERE id = 12');
$data = $result->fetch_assoc();
$result->close();

配列内のデータを使用するには、次の$dataようにします。

$blob = unserialize($data['column_name']);

$blob['label']これで、またはを使用して各値にアクセスし、必要に応じてデータを表示できます$blob['days']

于 2012-10-04T02:04:35.313 に答える