के साथ MySQLi तैयार कथन मुझे IN
ऑपरेटर का उपयोग कर डेटाबेस से कुछ पंक्तियों का चयन करना होगा। मैं तैयार कथन का उपयोग कर इसे करना चाहता हूं। यह मेरा कोड है:आईएस ऑपरेटर
<?php
$lastnames = array('braun', 'piorkowski', 'mason', 'nash');
$in_statement = '"' . implode('", "', $lastnames) . '"'; //"braun", "piorkowski", "mason", "nash"
$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
$data_res->execute();
$result = $data_res->get_result();
while ($data = $result->fetch_array(MYSQLI_ASSOC)) {
...
}
?>
लेकिन कुछ भी नहीं लौटाता है हालांकि डेटाबेस में सभी डेटा मौजूद है।
और एक और: यदि मैं सीधे पूछताछ और निष्पादित करने के लिए $in_statement
पास करता हूं, तो डेटा वापस कर दिया जाएगा। तो तैयारी पर समस्या दिखाई देती है।
मैं Google में प्रश्न की तलाश में था लेकिन यह 'सफल नहीं था। मेरे कोड में क्या गलत है?
मदद के लिए धन्यवाद!
$escaped_lastnames = join(',', array_map(array($_DB, 'real_escape_string'), $lastnames));
यह उचित स्ट्रिंग नक्शे:
आप अपने इन क्लॉज के लिए एक एकल पैरामीटर का उपयोग नहीं कर सकते हैं। यह होना चाहिए: 'जहां अंतिम नाम IN (?,?,?,?) ' – andrewsi
ठीक है, बहुत बहुत धन्यवाद!) यह थोड़ा बोझिल लगता है। – kpotehin