Ho utilizzato PDO per un po 'di tempo e sto rifattorizzando un progetto in modo che utilizzi stored procedure anziché SQL in linea. Ricevo un errore che non riesco a spiegare. Uso la versione 5.3.5 di PHP e la versione 5.0.7 di MySQL.Chiamare la procedura memorizzata con il parametro Out utilizzando PDO
Sto solo cercando di ottenere un proc memorizzato di base con un output per funzionare. Ecco il proc memorizzato:
DELIMITER //
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))
BEGIN
SET var1 = 'This is a test';
END //
Ecco il codice che sto usando per chiamare il proc, $ db è un'istanza della DOP:
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
// call the stored procedure
$stmt->execute();
echo $returnvalue;
Semplice no? Tuttavia, il risultato e 'il seguente errore:
exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 1 for routine mydb.proc_OUT is not a variable or NEW pseudo-variable in BEFORE trigger
Se chiamo il proc direttamente in questo modo:
CALL proc_OUT(@res);
SELECT @res;
funziona come ci si aspetta che mi porta a credere che ci sia un problema con come è essere chiamato con PHP, tuttavia non riesco a trovare quale sia il problema. Sto seguendo le istruzioni in the manual ma sto ancora ricevendo questo errore. Qualcuno potrebbe suggerire cosa potrei fare di sbagliato? Qualsiasi consiglio sarebbe molto apprezzato. Grazie mille!
http://stackoverflow.com/a/4502524/815386 –
L'ho replicato con mysql 5.5.28 e php 5.3.10. Inoltre, sembra che tu abbia 2 versioni di '$ return_value'- un'altra senza il carattere di sottolineatura. È destinato? Non sembra fare la differenza in uscita. –