我有以下代码(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'];
}