2013-06-10 5 views
10

HY093 के बारे में अन्य सभी प्रश्नों को पढ़ने के बाद, मैं यह पता लगाने के लिए खोलता हूं कि मुझे यह संदेश क्यों मिला है।त्रुटि HY093 एक MySQL सम्मिलित पीडीओ अनुरोध

यहाँ मेरी मेज है: Table PhpMyAdmin screenshot

और यहाँ है मेरे अनुरोध:

$sql = $conn->prepare("INSERT INTO Sites (Email,URL,Title,Description,PageRank,Rewrite,MetaDesc,Origin,BackLink,nbBackLink,RssTitle,RssAddress,SocAddress,SocPostalCode,SocCity,SocCountry,SocTel,Offer,Status,nbHit) 
         VALUES (:Email,:URL,:Title,:Description,:PageRank,:Rewrite,:MetaDesc,:Origin,:BackLink,0,:RssTitle,:RssAddress,:SocAddress,:SocPostalCode,:SocCity,:SocCountry,:SocTel,:Offer,:Status,0)"); 
$sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$pageRank = new GooglePageRank($_POST["site_url"]); 

$sql->bindParam(":Email",$_POST["submail"],PDO::PARAM_STR); 
$sql->bindParam(":URL",$_POST["site_url"],PDO::PARAM_STR); 
$sql->bindParam(":Title",$_POST["site_title"],PDO::PARAM_STR); 
$sql->bindParam(":Description",$_POST["site_desc"],PDO::PARAM_STR); 
$sql->bindParam(":PageRank",$pageRank->PageRank,PDO::PARAM_INT); 
$sql->bindParam(":Rewrite",stringToRewrite($_POST["site_title"]),PDO::PARAM_STR); 
$sql->bindParam(":MetaDesc",$_POST["site_desc"],PDO::PARAM_STR); 
$sql->bindParam(":Origin",$_POST["site_country"],PDO::PARAM_STR); 
$sql->bindParam(":BackLink",$_POST["site_backlink"],PDO::PARAM_STR); 
$sql->bindParam(":RssTitle",$_POST["site_rss_title"],PDO::PARAM_STR); 
$sql->bindParam(":RssAddress",$_POST["site_rss_addr"],PDO::PARAM_STR); 
$sql->bindParam(":SocAddress",$_POST["soc_addr"],PDO::PARAM_STR); 
$sql->bindParam(":SocPostalCode",$_POST["soc_cp"],PDO::PARAM_STR); 
$sql->bindParam(":SocCity",$_POST["soc_city"],PDO::PARAM_STR); 
$sql->bindParam(":SocCoutry",$_POST["soc_pays"],PDO::PARAM_STR); 
$sql->bindParam(":SocTel",$_POST["soc_tel"],PDO::PARAM_STR); 

$offer = $_POST["offer"] == "premium" ? 1 : 0; 
$status = $_POST["offer"] == "premium" ? 2 : 0; 

$sql->bindParam(":Offer",$offer,PDO::PARAM_INT); 
$sql->bindParam(":Status",$status,PDO::PARAM_INT); 

$sql->execute(); 
var_dump($sql->errorInfo()); 
var_dump($sql->errorCode()); 

किसी भी विचार क्यों मैं रखना एक HY093 त्रुटि है (कहाँ $ Conn मेरी पीडीओ कनेक्शन है)?

+1

सुनिश्चित करें। बाध्य चर की संख्या टोकन की संख्या से मेल नहीं खाती –

+0

यह वह नहीं था। एन्बर ने क्यों पाया;) –

+0

यह ** सटीक ** त्रुटि थी। वहां नहीं हैं: क्वेरी में SocCoutry टोकन, मतलब संख्या –

उत्तर

15

आप अपने bindParams में से एक में कोई गलती है, जिसका अर्थ आप मानकों में एक बेमेल है है:

:

$sql->bindParam(":SocCoutry",$_POST["soc_pays"],PDO::PARAM_STR); 

$sql->bindParam(":SocCountry",$_POST["soc_pays"],PDO::PARAM_STR); 
+0

से मेल नहीं खाती है, यह काम करता है। –

+0

मुझे एक ही समस्या का सामना करना पड़ा। और मेरे कोड में गलती का पता लगाने के लिए मुझे पहले से ही बहुत समय लगता है। अभी भी ढूंढ रहे हैं ... – LCB

+0

@ एलसीबी यह शायद कहीं एक टाइपो है, लेकिन आप एक नया सवाल बना सकते हैं। आंखों की एक ताजा जोड़ी मदद कर सकती है। – aynber

1

होना चाहिए यहाँ एक दिलचस्प मामला मैंने पाया है इस क्वेरी को चला रहा है:

INSERT INTO videosubmissions (member_login, submission_date) VALUES (":login", ":submission-date") 

साथ बाउंड:

[ ':login',   $info['login'], PDO::PARAM_STR ], 
[ ':submission-date', $submission_date, PDO::PARAM_STR ] 

काम करता है ... लेकिन

INSERT INTO videosubmissions (member_login, submission_date) VALUES (:login, :submission-date) 

एक HY093 त्रुटि के साथ विफल। मुझे संदेह था कि यह स्ट्रिंग से तारीख तक अंतर्निहित रूपांतरण के कारण हुआ था लेकिन एक स्पष्ट STR_TO_DATE (प्रारूप, एसडीएटी) को आजमाया गया था। हालांकि अगर मैं पीडीओ :: PARAM_STR मूल्य के साथ अन्य प्रश्नों में अपने सभी प्लेसहोल्डर्स को उद्धृत करता हूं, तो इससे समस्याएं उत्पन्न हुईं।

मुझे पता है कि यह वास्तव में क्यू का जवाब नहीं देता है लेकिन यह पता लगाने में मदद करने के लिए मिश्रण में एक और मामला जोड़ता है।

+0

दिलचस्प बात यह है कि क्वेरी में तारों को मैन्युअल रूप से प्रतिस्थापित करना और MyPhpAdmin पर चलना भी काम करता है। –

+1

मेरे पास कुछ हद तक एक ही समस्या है, मैंने पाया कि यदि var-array में अधिक प्रविष्टियां होती हैं तो क्वेरी की अपेक्षा होती है, तो HY093 होता है –

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