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

MySQLiは動的更新クエリを使用してステートメントを準備しました

    秘訣は、バインドするパラメーターを含む配列を作成してから、call_user_func_arrayを使用することです。 、この配列をbind_paramに渡すことができます 。

    http://www.php.net/を参照してください。 manual / en / function.call-user-func-array.php call_user_func_arrayの詳細については 。

    コードは次のようになります:

        $para_type="";
        /* $para is the array that later passed into bind_param */
        $para=array($para_type);
        $query = 'UPDATE tickets SET ';
    
        IF(count($data) != 0) {
            /* Looping all values */
    
            foreach($data as $k=>$d) {
                $query .= '`'.$d['field'].'` = ? ,';
    
                $para_type .=$d['type'];
    
                $para[] = &$data[$k]['value'];
            }
    
            /* removing last comma */
            $query[(strlen($query)-2)] = '';
    
            /* adding where */
            $query .= ' WHERE `ticket_id` = ?';
            $para_type .= 'i';
            $para[]=&$ticket_id;
    
            call_user_func_array(array($stmt, 'bind_param'), $para);
    
            return true;
        }
    

    &に注意してください すべてのパラメーターの前に、bind_paramが必要です。 。

    私がより良いと思うもう一つの方法は、PDOを使用することです。名前付きパラメーターを取り、インクリメンタルバインドを実行できます。




    1. Javaアプリケーションへのpostgresの変更を通知する

    2. PostgreSQLデータベースのすべてのテーブルを削除するにはどうすればよいですか?

    3. Connector / C ++ MySQLエラーコード:2014、SQLState:HY000およびコマンドの同期エラーはなぜですか?

    4. 更新/削除が成功したときに影響を受ける行が0を返すのはなぜですか?