Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

फॉर्म विकल्पों के साथ MYSQL क्वेरी को फ़िल्टर करें

इसे आजमाएं। मेरे परीक्षण से स्थानीय रूप से (डीबी के बिना) सही लग रहा था।

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

यदि सभी तीन मान भरे हुए हैं तो आपकी क्वेरी

. होनी चाहिए

? बाद में प्रक्रिया में ड्राइवर द्वारा मूल्यों के साथ पॉप्युलेट किया जाता है। यह उपयोगकर्ता(ओं) को SQLs प्रसंस्करण में हेरफेर करने के लिए दुर्भावनापूर्ण कोड जोड़ने से रोकता है।

https://www.owasp.org/index.php /SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29
मैं SQL को कैसे रोक सकता हूं PHP में इंजेक्शन?

मैंने यह भी नहीं देखा कि $funcao . कहां है सेट किया गया था..

आप mysqli पर कमेंट कर सकते हैं कोड क्या करता है यह देखने के लिए इको लाइनों को फ़ंक्शन और डिकम्मेंट करें। इस तरह मैंने पुष्टि की कि क्वेरी उम्मीद के मुताबिक बनाई जा रही हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel के साथ SSL पर MySQL कनेक्शन

  2. उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग करके:हाँ) के लिए प्रवेश निषेध (Mysql ::त्रुटि)

  3. एसक्यूएल - कॉलम में उच्चतम संख्या कैसे प्राप्त करें?

  4. WordPress के साथ HHVM का उपयोग करना

  5. दो टेबल mysql में कैसे शामिल हों?