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

Lọc truy vấn MYSQL với các tùy chọn biểu mẫu

Hãy thử cái này. Từ thử nghiệm cục bộ của tôi (không có db) trông đúng.

$n_req = 0;
$_POST['usuario'] = 'test';
$_POST['resumo'] = 'test2';
$_POST['status'] = 'test3';
if (!empty($_POST['usuario'])) {
$req_usuario = $_POST['usuario'];
$where[] = " usuario = ? ";
$params[] = $req_usuario;
$n_req++;
}
if (!empty($_POST['resumo'])) {
$req_resumo = $_POST['resumo'];
$where[] = " resumo = ? ";
$params[] = $req_resumo;
$n_req++;
}
if (!empty($_POST['status'])) {
    $req_status = $_POST['status'];
$where[] = " status = ? ";
$params[] = $req_status;
$n_req++;
}
$sql_where = !empty($where) ? ' where ' . implode(' and ', $where) : '';
echo $sql_where;
$tot = mysqli_prepare($con, "SELECT * FROM solicitacoes $sql_where");
if(!empty($params)) {
//foreach($params as $param) {
//  mysqli_stmt_bind_param($tot, "s", $param);
    //echo $param;
//}
$params = array_merge(array($tot),
                  array(str_repeat('s', count($params))), 
                  array_values($params));
print_r($params);
call_user_func_array('mysqli_stmt_bind_param', $params);
// adapated from https://stackoverflow.com/questions/793471/use-one-bind-param-with-variable-number-of-input-vars and http://www.pontikis.net/blog/dynamically-bind_param-array-mysqli may need to be altered
}
echo "SELECT * FROM solicitacoes $sql_where";
mysqli_execute($tot);

Nếu cả ba giá trị được điền thì truy vấn của bạn phải là

? được trình điều khiển điền vào các giá trị sau này trong quá trình này. Điều này ngăn (các) người dùng thêm mã độc để thao túng quá trình xử lý SQL.

https://www.owasp.org/index.php /SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29
Làm cách nào để ngăn chặn SQL tiêm trong PHP?

Tôi cũng không thấy $funcao ở đâu đã được thiết lập ..

Bạn có thể nhận xét về mysqli chức năng và loại bỏ các dòng tiếng vọng để xem mã làm gì. Đó là cách tôi xác nhận các truy vấn đã được tạo như mong đợi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Triển khai Nhận xét và Thích trong cơ sở dữ liệu

  2. Chuyển mã QR vào cơ sở dữ liệu MySql

  3. MySQL Utilities - tệp tùy chọn ~ / .my.cnf

  4. Lấy Id được chèn lần cuối từ MySQL trong Yii

  5. Sửa đổi cột Vs thay đổi cột