2

コード内の select ステートメント、更新などの量を削減しようとしているので、このための関数を作成しようと考えましたが、最初のハードルで私の努力が失敗していることに戸惑っています。

私はこの問題をかなり包括的にグーグル検索しましたが(私は感じています)、見つけた例に違いは見つかりません。

これは、問題の診断に役立つ print ステートメントを備えた関数です。

function select_statement($action, $table, $where){
print $action.' - ';

switch ($action){
    case 'select':
        print 'select used - ';
        $thequery = 'SELECT * FROM '. $table . ' WHERE '. $where;
    case 'insert':
        print 'insert used - ';
        $thequery = 'INSERT INTO '. $table;
    case 'update':
        print 'update used - ';
        $thequery = 'UPDATE ' . $table . ' SET ';
    }
print $thequery;
mysql_query($thequery);

}

これは関数を呼び出す行です:-

$logins = select_statement('select', 'users', 'user_id=1');//calls function

これは結果です:-

select - select used - insert used - update used - UPDATE users SET 

ご覧のとおり、コードは各 print ステートメントをトリガーし、「case」ステートメントを無視しているように見えます。

ここで何が間違っているのか本当にわかりませんか?

4

1 に答える 1

5

を使用するのを忘れましたbreak。これがないと、各 case ステートメントは次のステートメントに "フォールスルー" し、動作を続けます。各ステートメントbreakの最後で実行を停止します`;case

switch ($action){
    case 'select':
        print 'select used - ';
        $thequery = 'SELECT * FROM '. $table . ' WHERE '. $where;
        break;
    case 'insert':
        print 'insert used - ';
        $thequery = 'INSERT INTO '. $table;
        break;
    case 'update':
        print 'update used - ';
        $thequery = 'UPDATE ' . $table . ' SET ';
        break;
    }
于 2012-05-14T13:28:07.310 に答える