Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

चेतावनी:PDOStatement::execute():SQLSTATE[HY093]:अमान्य पैरामीटर संख्या:पैरामीटर में परिभाषित नहीं किया गया था...filetext

यदि आप स्थितीय मापदंडों का उपयोग करते हैं, तो आपके द्वारा पास किए जाने वाले मापदंडों की सरणी execute() एक क्रमिक सरणी होना चाहिए। इसी तरह, यदि आप नामित पैरामीटर का उपयोग करते हैं, तो सरणी एक सहयोगी सरणी होनी चाहिए।

व्यवहार की पुष्टि करने के लिए यहां एक परीक्षण दिया गया है:

$stmt = $db->prepare("SELECT ?, ? ,?");

$params = array( 'a', 'b', 'c' );
// OK
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

$params = array( 'A'=>'abc', 'B'=>'def', 'C'=>'ghi' );
// ERROR!
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

$stmt = $db->prepare("SELECT :A, :B, :C");

$params = array( 'a', 'b', 'c' );
// ERROR!
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

$params = array( 'A'=>'abc', 'B'=>'def', 'C'=>'ghi' );
// OK
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

ध्यान दें कि PHP के वर्तमान संस्करणों में, सहयोगी सरणी कुंजियाँ नहीं : . के साथ पहले लगाना होगा @prodigitalson टिप्पणियों के रूप में। : PHP के पुराने संस्करणों में सरणी कुंजियों में उपसर्ग की आवश्यकता होती थी।

यह भी ध्यान देने योग्य है कि जब मैंने एक ही क्वेरी में स्थितीय मापदंडों और नामित मापदंडों को मिलाने की कोशिश की तो मुझे बग और अप्रत्याशित व्यवहार का सामना करना पड़ा। आप भिन्न . में किसी भी शैली का उपयोग कर सकते हैं आपके ऐप में क्वेरी, लेकिन किसी दिए गए क्वेरी के लिए एक शैली या दूसरी को चुना।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. % के स्थान पर MySQL में एक वर्ण का मिलान कैसे करें?

  2. MySQL में मैक्स कनेक्शंस कैसे बढ़ाएं

  3. हाइव 2.1.1 मेटाएक्सप्शन (संदेश:मेटास्टोर में संस्करण की जानकारी नहीं मिली।)

  4. मैं mysql कार्यक्षेत्र के माध्यम से mysql डेटाबेस में डेटा कैसे आयात कर सकता हूं?

  5. php imap - शरीर प्राप्त करें और सादा पाठ बनाएं