2010-05-16 9 views
6

मैं विधि के साथ यूआरएल से मूल्यों को पुन: प्राप्त करने कर रहा हूँ और फिर यह निर्धारित करने वे वहाँ तो कर रहे हैं करने के लिए डेटाबेस के खिलाफ उन्हें क्वेरी केवल उन वस्तुओं है कि उन्हें मेल खाते हैं दिखाने के एक अगर बयान का उपयोग कर, मैं के साथ एक अज्ञात त्रुटि मिलती है आपके अनुरोध।mysql_query जहां बयान

"SELECT * FROM generalinfo WHERE province='$province' AND city='$city'" 

ध्यान दें कि इस तरह से क्वेरी का निर्माण एक एसक्यूएल इंजेक्शन vulnerabillity के जोखिम में छोड़ सकता: यहाँ मेरी कोड

$province = $_GET['province']; 
$city = $_GET['city']; 

if(isset($province) && isset($city)) {   
    $results3 = mysql_query("SELECT * 
          FROM generalinfo 
          WHERE province = $province 
          AND city = $city ") 
         or die("An unknown error occurred with your request");   
} else {    
    $results3 = mysql_query("SELECT * FROM generalinfo"); 
} /*if statement ends*/ 

उत्तर

6

आप एसक्यूएल में एकल उद्धरण अपने तार दौर की जरूरत है। इसके बजाय mysql_real_escape_string का उपयोग करने पर विचार करें।

"SELECT * FROM generalinfo WHERE province='" . 
mysql_real_escape_string($province) . "' AND city='" . 
mysql_real_escape_string($city) . "'" 
+0

+1 क्योंकि उपयोगकर्ता इनपुट से निपटने का एकमात्र सही तरीका इसे से बचाना है। –

+1

+1 उत्तर में सुरक्षा छेद के बिना। पैरामीटरयुक्त प्रश्नों ('mysqli'/PDO) पर भी विचार करें। – bobince

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद और यह पूरी तरह से काम किया और मैं escapes विकल्प शामिल किया। –