sql >> Databáze >  >> RDS >> Mysql

Chyba při volání uložené procedury MySQL prostřednictvím PHP

Předpokládám, že první argument vaší uložené procedury je VARCHAR, takže prvním problémem je, že předáváte $q proměnná bez uvozovek v dotazu. Mělo by to být takto:

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

Také nemusíte provádět dvě volání SELECT, udělejte to pouze jednou:

SELECT @eset AS eset, @leng AS leng;

Netřeba dodávat, že uživatelským vstupům by se nikdy nemělo věřit. Měli byste použít připravené příkazy:

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



  1. Kvalita dat a fuzzy vyhledávání

  2. chyba postgresql:zrušení příkazu kvůli požadavku uživatele

  3. Vložit do stejné tabulky spouštěč mysql

  4. Oracle sekvence:CURRVAL zde není povoleno?