Saya melihat setidaknya 2 kesalahan dalam kode Anda.
-
nilai array asosiatif $column_names seharusnya diteruskan sebagai nama bidang, jadi saya berasumsi bahwa itu tidak benar, karena Anda memiliki spasi di dalamnya (dan seperti yang saya tahu wordpress secara default tidak memiliki nama bidang seperti itu.
-
jika beberapa pilihan disediakan oleh pengguna, Anda menambahkan beberapa nama bidang tambahan ke yang pernah dilewati oleh pengguna dan Anda memiliki titik dua setelahnya sehingga akan menghasilkan kesalahan.
Saya akan menulis ulang kode seperti ini
<?php
$all = false;
$column_names = array('1' => '`field1`', '2' => '`field2`', '3' => '`field3`');
if(isset($_POST['columns'])){
$column_entries = $_POST['columns'];
$sql_columns = array();
foreach($column_entries as $i) {
if(array_key_exists($i, $column_names)) {
$sql_columns[] = $column_names[$i];
}
}
$sql_columns[] = "authorss";
$sql_columns[] = "research_source";
$sql_columns[] = "research_title";
} else {
$all = true;
$sql_columns[] = "*";
}
Juga seperti yang Anda katakan $wpdb->get_results sudah mengembalikan hasil - larik jadi itu sebabnya Anda mendapatkan kesalahan. Plus sebelum memanggil mysql_fetch_assoc lebih baik untuk memeriksa apakah parameter yang diteruskan adalah sumber dan jika jumlah baris bukan 0.
if($result!==false && mysql_num_rows($result)>0){
while( $row = mysql_fetch_assoc($result)){
...
}
}
************ PERBARUI ************
sesuai dengan perubahan terakhir coba kode ini:
<?php
$all = false;
$column_names = array('1' => '`authorss`', '2' => '`research_source`', '3' => '`research_title`');
if(isset($_POST['columns'])){
$column_entries = $_POST['columns'];
$sql_columns = array();
foreach($column_entries as $i) {
if(array_key_exists($i, $column_names)) {
$sql_columns[] = $column_names[$i];
}
}
} else {
$all = true;
$sql_columns[] = "authorss";
$sql_columns[] = "research_source";
$sql_columns[] = "research_title";
}
global $wpdb;
//DNI CHECKBOX + ALL
$tmp = $wpdb->get_results( "SELECT ".implode(",", $sql_columns)." FROM wp_participants_database");
echo "<table border='1' style='width:450px'>
<tr>
<th>authorss</th>
<th>research_source</th>
<th>research_title</th>";
foreach($column_names as $k => $v) {
if($all || (is_array($column_entries) && in_array($k, $column_entries)))
echo "<th>$v</th>";
}
echo "</tr>";
if(count($tmp)>0){
for($i=0;$i<count($tmp);$i++){
echo "<tr>";
foreach($tmp[$i] as $key=>$value){
echo "<td>" . $value . "</td>";
}
foreach($column_names as $k => $v) {
if($all || (is_array($column_entries) && in_array($k, $column_entries))) {
echo "<th>".$row[$v]."</th>";
}
}
echo "</tr>";
}
}
echo '</table>';
?>