आप पहले से ही sql इंजेक्शन से सुरक्षित हैं, क्योंकि आप mysqli_stmt_bind_params का उपयोग कर रहे हैं जो आपके लिए ठीक से बच जाएगा।
संपादित करें। स्वच्छ और सुंदर कोड के लिए आप कुछ डेटाबेस ढांचे पर स्विच कर सकते हैं।
वरना... यह बहुत पुरानी स्पेगेटी शैली है... लेकिन मुझे यह पसंद है :D
अज्ञात संख्या में पैरामीटर के साथ काम करने के लिए अपने कोड का विस्तार करना काफी आसान है। आपको बस अपने पैरामीटर पर लूप करना चाहिए और उसी समय 1. प्रश्न चिह्न नोटेशन के साथ अपनी क्वेरी स्ट्रिंग बनाएं, और अपने पैरामीटर को एक सरणी में जोड़ें, जिसे आप maxdb_stmt_bind_param ( संसाधन $stmt , string $types , array &$var ).
तो यह इस तरह दिखेगा। यह मानता है कि कम से कम एक पैरामीटर है (लेकिन इससे बचना मामूली है)।
$sql = "SELECT * FROM tbl_data WHERE ";
$and = '';
$types = '';
$parameters = array();
foreach($_POST as $k => $v) {
// check that $k is on your whitelist, if not, skip to the next item
$sql .= "$and $k = ?";
$and = " AND ";
$parameters[] = $v;
$types .= 's';
}
$stmt_query = mysqli_prepare($db, $sql);
mysqli_stmt_bind_params($stmt_query, $types, $parameters);