sql >> Database >  >> RDS >> Mysql

Filter MYSQL-query met formulieropties

Probeer dit eens. Van mijn lokaal testen (zonder db) zag het er goed uit.

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

Als alle drie de waarden zijn ingevuld, moet uw zoekopdracht

. zijn

De ? worden later in het proces door het stuurprogramma met de waarden gevuld. Dit voorkomt dat de gebruiker(s) kwaadaardige code toevoegt om de SQL-verwerking te manipuleren.

https://www.owasp.org/index.php /SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29
Hoe kan ik SQL voorkomen injectie in PHP?

Ik heb ook niet gezien waar $funcao was ingesteld..

Je kunt commentaar geven op de mysqli functies en decommenteer de echolijnen om te zien wat de code doet. Dat is hoe ik bevestigde dat de zoekopdrachten werden gebouwd zoals verwacht.



  1. PostgreSQL waar alles in array staat

  2. Hoe maak je goed gebruik van multicore CPU's in je PHP/MySQL-applicaties?

  3. Modelleren van een open markt voor onderwijs

  4. Oracle - Waarom zou ik pakketten gebruiken in plaats van op zichzelf staande procedures of functies?