यह DBI मैनुअल से मानक डालने वाला उदाहरण है:पर्ल डीबीआई: बाध्य मूल्यों के साथ असफल क्वेरी कैसे देखें?
my $query = q{
INSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
};
my $sth = $dbh->prepare($query) or die $dbh->errstr;
while (<>) {
chomp;
my ($product_code, $qty, $price) = split /,/;
$sth->execute($product_code, $qty, $price) or die ($query . " " . $dbh->errstr);
}
$dbh->commit or die $dbh->errstr;
मैंने इसे थोड़ा सा संशोधित किया है, इसलिए मैं मरने पर देख सकता हूं कि कौन सी क्वेरी विफल हुई (die ($query . " " . $dbh->errstr)
)। फिर भी मुझे क्वेरी को (जैसा कि इसे निष्पादित किया गया था) के साथ क्वेरी देखना पसंद आया था। इसे कैसे प्राप्त करें?
btw संपादित करें, मुझे बाध्य मानों के साथ क्वेरी देखने के लिए एक अजीब तरीका भी मिला: आपको क्वेरी में वाक्यविन्यास त्रुटि बनाना है। उदाहरण के लिए, यदि मैं उपर्युक्त क्वेरी को बदलता हूं:
my $query = q{
xINSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
};
मुझे यह वापस मिला जैसा मैं चाहता था:
डीबीडी :: mysql :: st execute विफल: आपको अपने SQL वाक्यविन्यास में कोई त्रुटि है ; 'xINSERT INTO नमूना (product_code, qty, कीमत) VALUES (' 1 ',' 2 ',' 3 ')' लाइन 1
पर उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से संबंधित मैन्युअल जांचें
कभी-कभी यह वास्तव में मदद करता है। कम से कम यह मेरे साथ किया था।
अच्छी दिशा इंगित करने के लिए धन्यवाद। फिर भी मैं ओपी में अपने जोड़ को इंगित करना चाहता हूं। –