0

「送信」入力項目の場合:

name="remove['.$username.']['.$event_id.']" 

if (isset($_POST[remove])) {
    foreach ($_POST[remove] as $username => $event_obj) {
        foreach ($event_obj as $event_id => $obj) {
            delete .... WHERE event_id='$event_id' AND username='$username'");
        }
    }
}

1 つの項目を持つ配列で使用される連想キーを取得するより短い方法はありますか?

4

1 に答える 1

0

array_keys()一度にすべてのevent_id値を取得するために使用します。これも、ユーザー名ごとに 1 つのクエリのみが必要です。

if( isset( $_POST['remove'])) {
    foreach( $_POST['remove'] as $username => $event_obj) {
        $event_ids = array_map( 'intval', array_keys( $event_obj));
        $sql = 'DELETE FROM mytable 
                    WHERE event_id IN ( ' . implode( ' OR ', $event_ids) . ' ) 
                        AND username = "' . $username  . '"'; // Sanitize $username
    }
}
于 2013-02-12T02:21:12.123 に答える