sql >> Databasteknik >  >> RDS >> Mysql

Fel vid anrop av MySQL lagrad procedur via PHP

Jag antar att det första argumentet i din lagrade procedur är VARCHAR, så det första problemet är att du skickar $q variabel utan citattecken i frågan. Det ska vara så här:

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

Dessutom behöver du inte göra två SELECT-anrop, gör det bara en gång:

SELECT @eset AS eset, @leng AS leng;

Onödigt att säga att användarinput aldrig bör lita på. Du bör använda förberedda uttalanden:

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. oracle sql (saknar vänster parentes

  2. Beräkna åldern i år i PostgreSQL

  3. Ha unpivot automatiskt ta tag i kolumnlista (oracle 11g)

  4. Flask SQLAlchemy stänger inte MySQL-databasanslutningar