2011-06-03 12 views
17

इस क्वेरी के लिए, mysql_real_escape_string का उपयोग करने के लिए आवश्यक है?तैयार कथन का उपयोग करते समय mysql_real_escape_string() आवश्यक है?

कोई भी सुधार या क्वेरी ठीक है?

$consulta = $_REQUEST["term"]."%"; 

($sql = $db->prepare('select location from location_job where location like ?')); 

$sql->bind_param('s', $consulta); 
$sql->execute(); 
$sql->bind_result($location); 

$data = array(); 

while ($sql->fetch()) { 
    $data[] = array('label' => $location); 
} 

इस मामले में क्वेरी गति महत्वपूर्ण है।

+0

संभावित डुप्लिकेट [क्या PHP MySQLi बाध्य पैरामीटर के साथ तैयार प्रश्न सुरक्षित हैं?] (Http://stackoverflow.com/questions/1561586/are-php-mysqli-prepared-queries-with-bound-parameters-secure) – outis

उत्तर

20

नहीं, तैयार प्रश्न (जब सही तरीके से उपयोग किया जाता है) यह सुनिश्चित करेगा कि सुरक्षित क्वेरीिंग के लिए डेटा ठीक से बच निकला है। आप उन्हें सही तरीके से उपयोग कर रहे हैं, बस एक छोटी सी चीज़ को बदलने की जरूरत है। क्योंकि आप '?' का उपयोग कर रहे हैं प्लेसहोल्डर, निष्पादन विधि के माध्यम से पैरा पास करना बेहतर है।

$sql->execute(array($consulta));

बस सावधान यदि आप अपने पृष्ठ के लिए कि outputting रहे हो, डेटाबेस सफ़ाई का अर्थ यह नहीं है कि यह HTML के भीतर प्रदर्शन के लिए सुरक्षित हो जाएगा, तो htmlspecialchars() इस पर साथ ही चलाते हैं।

+0

तो, ऐसा कुछ? $ Sql-> bind_param ('एस'); $ Sql-> पर अमल (सरणी ($ Consulta)); – anvd

+0

सॉर्टा, बस bind_param को ढीला करें और आपको अच्छा होना चाहिए। जब आप कॉल करने के लिए जाते हैं तो आपका पूरा काम सिर्फ आपके पैरा को बाध्य कर रहा है -> execute(); – SamT

+0

और कोई फायदा है? धन्यवाद – anvd

संबंधित मुद्दे