2016-12-02 8 views
-1

PHPでストアドプロシージャを実行する際に問題があります。PHP 7がMySQL 5.7からプロシージャを実行するエラー

私の手順は次のとおりです。

create procedure test_procedure() 
    BEGIN 
    select yf_f_get_msg(-2); 
    END 

私の機能は次のとおりです。

create function `yf_f_get_msg`(`p_sql_state` int(11)) 
    returns text 
BEGIN 
    declare specialty condition for sqlstate '45000'; 
    if p_sql_state < 0 then 
     signal specialty set message_text = 'It is just error'; 
    end if; 
    return 1; 
END 

私の手順が機能し、私の関数の戻り値の例外(信号エラー)を実行します。

PHPコード

try { 
    $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', null); 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 

$sth = $dbh->prepare('call test_procedure()'); 
$sth->execute(); 

だから、私はブラウザにロードページを傾けます。 http://joxi.net/brRjzzWCpvbYr1

使用mysqliの接続あなたは(yf_f_get_msg(-2)を選択)このhttp://joxi.net/a2XDzzRizYY62g

答えて

0

場合に使用セット@g =のように取得する場合は、の手順で動作します。

create procedure test_procedure() 
    BEGIN 
    set @g = (select yf_f_get_msg(-2)); 
    END 
関連する問題