pdusp
19.08.2020, 15:04:45
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;
trueblue
19.08.2020, 15:23:29
pdusp
20.08.2020, 07:52:23
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
20.08.2020, 08:08:46
A skąd tam wzięło się "this"?
pdusp
21.08.2020, 07:09:19
Trueblue, a pomożesz i doradzisz jak wyeliminować to this?
dziekuje
Piotr
trueblue
21.08.2020, 09:35:33
Może poprzez eliminację?
Jak wykonujesz wcześniejsze zapytania, np. CALL?
pdusp
1.09.2020, 14:39:32
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.