-1

なぜ私はこのようなことをすることができないのですか (これは関数内にあります):

switch($a) {
case 'userStatus':
break;

case 'userCanEdit':
break;

case 'userCanView':
break;

default:
echo 'Unable to identify type';
return false;

$sqlUpdateId = 'update users set :sql = :status where userId = :id and code = :code';

$updateId->bindParam(':sql',$a);
}

:sql部分に注意してください。上に設定されており、スイッチを通過した後に通過します。しかし、これはうまくいきません。入力値のみをバインドできますか? これにより、多くのコードが節約されます。

4

2 に答える 2

2

ただし、次のことができます。

$allowedColumns = ('userStatus', 'userCanEdit', ...);
if (in_array($a, $allowedColumns)) {
    $sqlUpdateId = 'update users set ' . $a . ' = :status where userId = :id and code = :code';
}
于 2013-06-10T13:20:47.793 に答える
1

いいえ、列名をバインドすることはできません。値のみをバインドします。

于 2013-06-10T13:10:20.287 に答える