Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sử dụng hộp kiểm để truy xuất dữ liệu cụ thể trong cơ sở dữ liệu

Tôi thấy ít nhất 2 lỗi trong mã của bạn.

  1. các giá trị mảng liên kết $ column_names phải được chuyển dưới dạng tên trường, vì vậy tôi cho rằng chúng không đúng, vì bạn có khoảng trắng trong đó (và như tôi biết wordpress theo mặc định không có tên trường như vậy.

  2. nếu một số lựa chọn được cung cấp bởi người dùng, bạn đang thêm một số tên trường bổ sung vào một khi được người dùng chuyển qua và bạn có dấu hai chấm sau chúng, vì vậy nó sẽ tạo ra lỗi.

Tôi sẽ viết lại mã như thế này

<?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[] = "*";
}

Cũng như bạn đã nói $ wpdb-> get_results đã trả về kết quả - mảng, vì vậy đó là lý do tại sao bạn gặp lỗi. Ngoài ra, trước khi gọi mysql_fetch_assoc, tốt hơn nên kiểm tra xem tham số đã truyền có phải là nguồn cung cấp lại hay không và nếu số hàng không phải là 0.

if($result!==false && mysql_num_rows($result)>0){
    while( $row = mysql_fetch_assoc($result)){
        ...
    }
}  

*********** CẬP NHẬT ***********

theo những thay đổi cuối cùng, hãy thử mã này:

<?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>';
?>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Trigger chèn vào một bảng khác

  2. Cách chèn một số lượng rất lớn các bản ghi vào cơ sở dữ liệu MySql nhanh nhất có thể

  3. Canonical:Cách lưu dữ liệu biểu mẫu HTML vào cơ sở dữ liệu MySQL

  4. Công cụ tốt để trực quan hóa lược đồ cơ sở dữ liệu?

  5. Cách kiểm tra xem cơ sở dữ liệu mysql có tồn tại hay không