Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur lors de l'appel de la procédure stockée MySQL via PHP

Je suppose que le premier argument de votre procédure stockée est VARCHAR, donc le premier problème est que vous passez le $q variable sans guillemets dans la requête. Cela devrait ressembler à ceci :

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

De plus, vous n'avez pas besoin de faire deux appels SELECT, faites-le une seule fois :

SELECT @eset AS eset, @leng AS leng;

Inutile de dire que les entrées de l'utilisateur ne doivent jamais être fiables. Vous devez utiliser des instructions préparées :

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();
    }
}