sql >> データベース >  >> RDS >> Mysql

PHPを介したMySQLストアドプロシージャの呼び出し中にエラーが発生しました

    ストアドプロシージャの最初の引数はVARCHARであると想定しているため、最初の問題は$qを渡すことです。 クエリに引用符がない変数。次のようになります:

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

    また、SELECT呼び出しを2回行う必要はなく、1回だけ行う必要があります。

    SELECT @eset AS eset, @leng AS leng;
    

    言うまでもなく、ユーザー入力は決して信頼されるべきではありません。プリペアドステートメントを使用する必要があります:

    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. SQLファイルに複数のプロシージャを作成しますか?

    2. JDBCドライバークラスが見つかりません:oracle.jdbc.OracleDriver

    3. java.time.LocalDate.getDayOfWeek()からjava.util.Calendar.get(DAY_OF_WEEK)

    4. Access2016で空のデータベースを作成する方法