sql >> Database teknologi >  >> RDS >> Mysql

Fejl ved kald af MySQL-lagret procedure via PHP

Jeg antager, at det første argument i din lagrede procedure er VARCHAR, så det første problem er, at du sender $q variabel uden anførselstegn i forespørgslen. Det skal være sådan her:

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

Du behøver heller ikke foretage to SELECT-opkald, gør det kun én gang:

SELECT @eset AS eset, @leng AS leng;

Det er overflødigt at sige, at brugerinput aldrig bør stole på. Du bør bruge forberedte udsagn:

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. Fjern låse uden pid i postgres

  2. Hvad sker der, når du bruger MySQL Insert Delayed i en transaktion?

  3. Er mysql_real_escape_string() brudt?

  4. Udløs mutationsproblem