0

这可能看起来过于复杂,但它已经尽可能接近我的目标了。我看到了这个问题:mysql where 子句上的 json field但没有得到回答。

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

我不知道还有什么方法可以解决这个问题

4

1 回答 1

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 中看到的,它是一个serializedPHP 对象。它遵循 JSON 的一些约定,但不是一回事。只看字符串,它似乎是一个包含一个字符串和一些其他嵌套数组的数组。如果你在 PHP 中使用unserialize函数,你应该把它作为 PHP 值取出来。

要完成您在 FPDF 中尝试执行的操作,您可能需要自己查询数据库,将记录组装成二维数组,并使用 FPDF 中的基本Table类进行输出。我不确定是否有快速修复它

于 2013-07-17T20:26:47.710 回答