簡體   English   中英

如何在mysql查詢中處理json

[英]How to handle json inside a mysql query

這看起來似乎很復雜,但是離我可以實現的目標很近。 我看到了這個問題: mysql where子句上的json字段,但未得到回答。

我正在使用具有高級自定義字段的wordpress進行工作,我需要生成一個PDF,其中將包含一個包含數據庫中帖子的表格。 我使用fpdf實現了這一目標( http://www.fpdf.org/ )。 我需要在pdf中顯示一個表格,當帖子列表過長時,該表格將跳至下一頁,並且有相應的腳本( http://www.fpdf.org/en/script/script14.php )。

一切正常,但是我需要具有帶有自定義字段的列,並且我已經為它們使用了高級自定義字段,但我真的不知道如何進行mysql查詢(我無法使用wordpress查詢,它將無法正常工作與之前鏈接的pdf腳本)。 如果我查詢自定義字段,則需要這樣的json字符串:

a:3:{s:10:"pa_medidas";a:6:{s:4:"name";s:10:"pa_medidas";s:5:"value";s:0:"";s:8:"position";s:1:"0";s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}s:12:"pa_variacion";a:6:{s:4:"name";s:12:"pa_variacion";s:5:"value";s:0:"";s:8:"position";s:1:"1";s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}s:20:"pa_grupo-de-clientes";a:6:{s:4:"name";s:20:"pa_grupo-de-clientes";s:5:"value";s:0:"";s:8:"position";s:1:"2";s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}}

在我的pdf文件中,我應該在高級自定義字段中為每個數據添加一列。

這是我用來生成pdf的代碼:

$pdf = new PDF_MySQL_Table();
$title = 'Gestyre PDF';
$pdf->SetTitle($title);
$pdf->AddPage();
//First table: put all columns automatically

$query = " SELECT  p.ID,
        p.post_title,
        pm1.meta_value AS first_field,
        pm2.meta_value AS second_field,
        pm3.meta_value AS third_field
    FROM    wp_posts p LEFT JOIN wp_postmeta pm1 ON (
            pm1.post_id = p.ID  AND
            pm1.meta_key    = 'gama'
        ) LEFT JOIN wp_postmeta pm2 ON (
            pm2.post_id = p.ID  AND
            pm2.meta_key    = '_product_attributes'
        ) LEFT JOIN wp_postmeta pm3 ON (
            pm3.post_id = p.ID  AND
            pm3.meta_key    = '_width'
        )
    WHERE p.post_type = 'product' and post_status = 'publish'";

$pdf->Table($query);
$pdf->AddPage();
$pdf->Output();

我不知道該怎么辦

a:3:{s:10:"pa_medidas";a:6:{s:4:"name";s:10:"pa_medidas";s:5:"value";s:0:"";s:8:"position";s:1:"0";s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}s:12:"pa_variacion";a:6:{s:4:"name";s:12:"pa_variacion";s:5:"value";s:0:"";s:8:"position";s:1:"1";s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}s:20:"pa_grupo-de-clientes";a:6:{s:4:"name";s:20:"pa_grupo-de-clientes";s:5:"value";s:0:"";s:8:"position";s:1:"2";s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}}

您實際上看到的不是JSON,而是serialized PHP對象。 它遵循JSON的某些約定,但不是一回事。 僅查看字符串,它似乎是一個包含字符串和其他嵌套數組的數組。 如果在PHP中使用反序列化函數,則應將其作為PHP值作為對象退回。

為了完成您在FPDF中嘗試做的事情,您可能需要自己查詢數據庫,將記錄組裝成2D數組,並使用FPDF中的基本Table類進行輸出。 我不確定是否有快速解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM