PHP,2行合1

标签 php mysql phpmyadmin

由于数据库的组织方式,我无法将正确的结果集放入 1 行。 我使用以下 SQL:

SELECT ord.ID, ord.post_date, ord.post_status, ord.post_type, 
meta.meta_value, term.term_id, term.name, 
SUBSTRING(meta.meta_value,LOCATE('\"id\";i:', meta.meta_value)+7,3) AS prodID,
user.user_email
FROM wp_posts ord
INNER JOIN wp_postmeta meta ON meta.post_id = ord.ID
INNER JOIN wp_term_relationships rel ON ord.ID = rel.object_id 
INNER JOIN wp_terms term on term.term_id = rel.term_taxonomy_id 
LEFT JOIN wp_users user ON user.ID = meta.meta_value
WHERE ord.post_type = 'shop_order'
AND (meta.meta_key = '_customer_user' OR meta.meta_key = '_order_items')
AND ord.post_date >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND ord.post_status <> 'trash'
AND term.term_id = 34
ORDER BY `ord`.`ID`  DESC

结果是:

ID Descending   post_date   post_status     post_type   meta_value  term_id     name    prodID  user_email
451     2013-02-02 10:24:00     publish     shop_order  2   34  processing      sales@proxyplayer.co.uk
451     2013-02-02 10:24:00     publish     shop_order  a:1:{i:0;a:10:{s:2:"id";s:3:"339";s:12:"variation_...   34  processing  338     NULL

理想情况下,我想将 meta.meta_value 恢复为一行, 因此,元值 2 将与 a:1:{i:0;a:10:{s:2:"id";i:338;s:12:"variation_id";...

但是,我认为在这种情况下我不能这样做,因为 meta_value 在元表中有 2 个单独的行。

所以,我想我可以在 PHP 中控制它并得到值 2 和值 338。 但是我怎样才能在 while 循环中执行此操作?

while ($squid = mysql_fetch_array($result, MYSQL_ASSOC)) {

//1st row

//2nd row

//processing code

}

我是否要在其中放置一个额外的 while 循环以跳过数据库中每 2 行数据? 我应该将它加载到数组中并循环遍历数组中的 2 行吗?

最佳答案

您需要在 PHP 中执行此操作是正确的:MySQL 不理解 PHP 的序列化数据格式。

但是,您不需要像您说的那样跳过行。在将存储 $ID -> meta_data 关系的循环外创建一个数组。我不完全知道你想如何连接它们,但看看这个例子。

$squArr = array();
while($squid = mysql_fetch_assoc...) // I'm using fetch assoc so I can use the row names as array indices
{
    $rowID = $squid['ID'];
    $rowMeta = $squid['meta_value'];
    $squArr[$rowID][] = $rowMeta;
}

在这里,这将为每个 ID 创建一个元数据数组。不过,您可以将 while 循环最后一行中的操作替换为不同的操作。

关于PHP,2行合1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14662067/

相关文章:

mysqldump 在失败时给出退出代码 0,例如因为数据库不存在

mysql - PHPMyAdmin 不导入 unicode

php - 如何获取是否添加了新查询

php - 在图像上创建红点和绿点

mysql - 在 Kohana 3 中记录 MySQL 查询

MySQL,同步两个表

php - 如何在 PHP 中选择并仅显示从日期开始的年份 (MySQL)

php - sql中如何获取指定日期的数据

php - Magento 将 referer 参数添加到 getLoginPostUrl()

mysql - 在单列中存储随机数量的外键和值[关系数据库设计]