पहले से ही पोस्ट किए गए इस तरह के कई समान प्रश्न हैं। हालांकि मुझे इस कोड को काम करने का कोई तरीका नहीं मिला है।एसक्यूएल सर्वर के साथ पीएचपी पीडीओ और तैयार बयान
मैं मूल रूप से ओडीबीसी का उपयोग करने के लिए पीडीओ का उपयोग करने के लिए मूल एमएसएसएलएल क्वेरी से PHP कोडबेस अपडेट कर रहा हूं। यहां पुराना कोड और दो भिन्नताएं हैं जिनकी मैंने कोशिश की है।
पुरानी शैली: काम करता है, यह अपेक्षित परिणामों की एक श्रृंखला उत्पन्न करता है। पीडीओ साथ
$db = mssql_connect('connection', 'user', 'password');
mssql_select_db('database', $db);
$sp = mssql_init('procedure', $db);
$param=1;
$results=[];
mssql_bind($sp,'@param',$param,SQLINT4,FALSE,FALSE);
$spRes = mssql_execute($sp);
while ($row = mssql_fetch_array($spRes, MSSQL_ASSOC)) $results[] = $row;
mssql_free_statement($sp);
var_dump(results);
का उपयोग T-SQL लगभग काम करता है: मैं जब तक मैं किसी भी पैरामीटर बाध्य करने के लिए कोशिश मत करो के रूप में परिणाम प्राप्त।
$pdo = new PDO($'dblib:host=connection', 'user', 'password');
$pdo->query('use database');
$sp= $db->prepare("EXEC procedure");
$sp->execute();
while ($row = $sp->fetch(PDO::FETCH_BOUND)) $results[] = $row;
$sp->closeCursor();
var_dump(results);
कई अपेक्षित परिणामों की एक श्रृंखला तैयार करता है। हालांकि पैरामीटर को बांधने का कोई भी प्रयास $results
को खाली सरणी के रूप में ले जाता है। कोई त्रुटि रिपोर्ट नहीं की गई है।
$sp= $db->prepare("EXEC procedure :param");
$sp->bindParam(':param', $param, PDO::PARAM_INT);
इससे खाली परिणाम सेट होता है, और कोई त्रुटि रिपोर्ट नहीं होती है।
ODBC "एसक्यूएल" का प्रयोग बिल्कुल काम नहीं लगता है:
$pdo = new PDO($'dblib:host=connection', 'user', 'password');
$pdo->query('use database');
$sp= $db->prepare("CALL procedure");
$sp->execute();
while ($row = $sp->fetch(PDO::FETCH_BOUND)) $results[] = $row;
$sp->closeCursor();
var_dump(results);
$results
रिक्त है; पैरामीटर के साथ या बिना, यह काम नहीं लग रहा है।
सिस्टम विवरण: Unixodbc & freetds के साथ उबंटू ट्रस्टी (14) पर PHP 5.5.9 चलाना।
मैं वास्तव में PHP पीडीओ कॉलिंग प्रक्रियाओं और एमएसएसक्यूएल के साथ बाध्यकारी पैरामीटर कॉलिंग के एक कामकाजी उदाहरण की सराहना करता हूं।
http: // st ackoverflow.com/a/32224294/285587? –
कुछ मदद के बाद। अब मैं '$ pdo = new PDO ('odbc = connection', 'user', 'password') से कनेक्ट कर रहा हूं; हालांकि, नामित पैरामीटर के लिए बाध्यकारी अभी भी काम नहीं कर रहा है। –
आपके प्रश्न में अपने परिवर्तनों को संपादित करने के लिए सबसे अच्छा, आपने जो कुछ भी शुरू किया है और जो आपने बदल दिया है, उसे सर्वोत्तम रूप से बनाए रखना। – TallTed