Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehler beim Aufrufen der gespeicherten MySQL-Prozedur über PHP

Ich gehe davon aus, dass das erste Argument Ihrer gespeicherten Prozedur VARCHAR ist, also besteht das erste Problem darin, dass Sie den $q übergeben Variable ohne Anführungszeichen in der Abfrage. Es sollte so aussehen:

$db->multi_query("CALL mst2('$q', @eset, @leng); SELECT @eset as eset; SELECT @leng as length");

Außerdem müssen Sie nicht zwei SELECT-Aufrufe machen, sondern nur einmal:

SELECT @eset AS eset, @leng AS leng;

Unnötig zu erwähnen, dass Benutzereingaben niemals vertraut werden sollte. Sie sollten vorbereitete Anweisungen verwenden:

if (($stmt = $db->prepare("CALL mst2(?, @eset, @leng)"))) {
    $stmt->bind_param("s", $q);
    $stmt->execute();
    $stmt->close();

    if (($res = $db->query("SELECT @eset AS eset, @leng AS leng"))) {
        list($eset, $leng) = $res->fetch_array();
        $result = $eset.$length;
        echo $result;

        $res->free();
    }
}