Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PDO::PARAM_INPUT_OUTPUT
Forum PHP.pl > Forum > PHP
pdusp
witam,
sam nie moge rozwiązać problemu dlatego postanowiłem się zwrócić do Was o pomoc.

mam procedure, które zwraca tekst w zmiennej out:

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_returns_string`( out _txt varchar(50))
BEGIN
set _txt ='berger never dies';
END

i to działa bo można sobie uruchomić:
set @_txt = '0';
call test.sp_returns_string(@_txt);
select @_txt;


nie działa juz przez PHP, zmienna wyjściowa jest pusta...
co robię źle?

$db = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$value2 = '123456hhh';
$stmt = $db->prepare("call sp_returns_string(?) ;"); // the DECLARE trick is needed with DBLib

$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);


$stmt->execute();

echo $value;

pdusp
dziękuje, ale nadal nie znam poprawnego rozwiązania:

znalazłem wiele rzeczy, nie ma ostateczne rozwiązanie mojego problemu

np. piszą o bugu w mysql w 2010 roku...

$stmt = $db->prepare("CALL sp_returns_string(:in_string, @out_string)");
$value='pppppp';
$stmt->bindParam(':in_string', $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);

$stmt->execute();

// fetch the output
$outputArray = this->db->query("select @out_string")->fetch(PDO::FETCH_ASSOC);

print "procedure returned " . $outputArray['@out_string'] . "\n";

tu dostaje blad przez to this chyba....
Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in C:\xampp\htdocs\trace\test2.php on line 28
trueblue
A skąd tam wzięło się "this"?
pdusp
Trueblue, a pomożesz i doradzisz jak wyeliminować to this?
dziekuje
Piotr
trueblue
Może poprzez eliminację?

Jak wykonujesz wcześniejsze zapytania, np. CALL?
pdusp
Podaje rozwiązanie, moze się komus jeszcze przyda?

$stmt = $db->prepare("CALL sp_returns_string(:in_1, :in_2, @out_string1, @out_string2)");
$value='pppppp';$value2='xxxx';
$stmt->bindParam(':in_1', $value, PDO::PARAM_STR , 4000);
$stmt->bindParam(':in_2', $value2, PDO::PARAM_STR , 4000);
$stmt->execute();

$outputArray = $db->query("select @out_string1, @out_string2")->fetch(PDO::FETCH_ASSOC);
// print_r($outputArray);

print "procedure returned: " . $outputArray['@out_string1'] . "\n";
print "procedure returned: " . $outputArray['@out_string2'] . "\n";
//print_r($result = $stmt->fetchAll(PDO::FETCH_CLASS));

pozdrawia
Piotr
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.