[英]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.