sql >> Databasteknik >  >> RDS >> Mysql

Filtrera MYSQL-fråga med formuläralternativ

Ge detta ett försök. Från min testning lokalt (utan db) såg rätt ut.

$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);

Om alla tre värden är ifyllda bör din fråga vara

? fylls i med värdena av föraren senare i processen. Detta förhindrar användaren/användarna från att lägga till skadlig kod för att manipulera SQL-bearbetningen.

https://www.owasp.org/index.php /SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29
Hur kan jag förhindra SQL injektion i PHP?

Jag såg inte heller var $funcao var inställd..

Du kan kommentera ut mysqli funktioner och avkommentera ekolinjerna för att se vad koden gör. Det var så jag bekräftade att frågor byggdes som förväntat.



  1. Hur man subtraherar aktuellt datum och tid från datum och tid i databasen - PHP

  2. Flera rader till ett kommaseparerat värde i SQL Server

  3. CodeIgniter:Lagra en bild i databasen?

  4. Hur ser jag Explain Plan i Oracle SQL-utvecklare?