显示MySQL-table中具有特定id的多个字段的数据

时间:2014-12-03 09:17:46

标签: php mysql

我有以下代码(在phpMyAdmin中测试的SQL查询并且似乎有效)从所选列中获取数据:

                $ids = isset($_REQUEST['id']) ? $_REQUEST['id'] : array();
                if (is_array($ids)) $ids = implode(',', $ids);

                if (!empty($ids)) {

                    $sql = "SELECT upload, upload2, upload3, upload4, upload5 FROM wp_site_table WHERE cid IN($ids) ORDER BY FIELD(cid, $ids)";

                    $results = $wpdb->get_results($sql) or die(mysql_error());

                    foreach( $results as $result ) { ... } }

我遇到的问题是我想输出所选cid中的所有字段。

此代码仅显示第一个cid结果。

echo $result->upload;

我们假设$ ids包含cid 1,4和7我想从所有这些特定行输出upload,upload2,upload4,upload5。怎么样?以某种方式使用数组?

亲切的问候 约翰

2 个答案:

答案 0 :(得分:0)

如果您想回显所有字段,请执行以下操作:

echo $result->upload . '<br>' . $result->upload2 . '<br>' . $result->upload3 .
    '<br>' . $result->upload4 . '<br>' . $result->upload5;

您应该考虑重新设计数据库,这样每行中都没有重复的字段。最好有另一个表,其中每个upload都在它自己的行中,因此这些值的数量没有硬编码限制。然后,您可以使用JOIN查询获取所有uploads,并且它们将位于数组中。

答案 1 :(得分:0)

使用'$ wpdb-&gt; get_results'输出默认为OBJECT类型。尝试使用预定义的常量:ARRAY_A,它将输出作为关联数组。

$sql = "SELECT upload, upload2, upload3, upload4, upload5 FROM wp_site_table WHERE cid  IN($ids) ORDER BY FIELD(cid, $ids)";

$results = $wpdb->get_results($sql, ARRAY_A) or die(mysql_error());

要访问,只需使用:

foreach( $results as $result ){
  echo $result['upload'];
}