2013-04-27 9 views
25

साथ तैयार बयान पीडीओ मैं निम्नलिखित mysql क्वेरी निष्पादित करने के लिए करना चाहते हैं:वाइल्डकार्ड

SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%' 

मैं सफलता के बिना इस की कोशिश की:

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); 
$stmt->bindParam(':name', "%" . $name . "%"); 
$stmt->execute(); 

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE '%:name%'"); 
$stmt->bindParam(':name', $name); 
$stmt->execute(); 

तो मैं आप से पूछना अगर यह% वाइल्डकार्ड का उपयोग करना संभव है तैयार बयान के साथ।

/

धन्यवाद। bindValue के साथ अपने काम के:

$name = "%$name%"; 
$query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name"); 
$query->bindParam(':name', $name); 
$query->execute(); 
+3

अपने पहले प्रयास के लिए के रूप में - परिवर्तन ' बिंदप्रम 'को' बाइंड वाल्यू 'करने के लिए और [पीडीओ के लिए त्रुटि रिपोर्टिंग] चालू करें (http://stackoverflow.com/questions/15990857/reference-frequently-asked-questions-about-pdo#15990858) –

उत्तर

23

यह भी निम्नलिखित तरीके से बाँध परम साथ काम कर सकते

$className = '%' . $this->className . '%'; 
$query->bind_param('s', $className); 
+0

यह सुनिश्चित नहीं है कि यह डॉव क्यों है एन मतदान किया लेकिन कृपया ध्यान दें कि यह समाधान भी काम करता है। :) – Sumoanand

+3

मुझे लगता है कि इसे डाउनवॉटेड कर दिया गया है क्योंकि यदि आपके '$ name' में वाइल्डकार्ड स्वयं है, तो यह बच नहीं गया है। –

+1

मैं अपना समय बर्बाद करता हूं जिसमें डीएसएन में कोई वर्णसेट = utf8 नहीं है, मैं थाई चरित्र के साथ खोज करता हूं। – ittgung

2

यह एक विकल्प हो सकता:

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); 
$stmt->bindValue(':name', '%' . $name . '%'); 
$stmt->execute(); 
संबंधित मुद्दे