sql >> Database >  >> RDS >> Mysql

Fout bij het aanroepen van de MySQL-opgeslagen procedure via PHP

Ik neem aan dat het eerste argument van je opgeslagen procedure VARCHAR is, dus het eerste probleem is dat je de $q doorgeeft variabele zonder aanhalingstekens in de query. Het zou zo moeten zijn:

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

Je hoeft ook geen twee SELECT-oproepen te doen, doe het maar één keer:

SELECT @eset AS eset, @leng AS leng;

Onnodig te zeggen dat gebruikersinvoer nooit mag worden vertrouwd. U moet voorbereide verklaringen gebruiken:

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. MySQL Tel producten uit alle subcategorieën

  2. Moet hibernate unieke reeksen gebruiken voor elke tabel?

  3. Een SQL-query schrijven met dynamische LIMIT

  4. verkeerde telling in query