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


Display data from several fields in MySQL-table with specific id

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

                $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,我想从所有这些特定行输出上传、上传 2、上传 4、上传 5。如何?以某种方式使用数组?

亲切问候Johan

如果你想回显所有的字段,只需这样做:

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

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

带有"$wpdb->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'];
}