如何在mysql查询中处理json

时间:2013-07-17 20:13:38

标签: mysql json wordpress fpdf

这可能看起来过于复杂,但它尽可能接近我的目标。我看到了这个问题:json field on mysql where clause但是没有回答。

我正在使用高级自定义字段处理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();

我不知道如何处理这个

1 个答案:

答案 0 :(得分:0)

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中使用unserialize函数,则应该将对象作为PHP值返回。

要完成你在FPDF中尝试做的事情,你可能会自己查询数据库,将记录组装成2D数组,并使用FPDF中的基本Table类来完成输出。我不确定是否有快速解决方法