未知数のパラメータを準備済みのPHP/MySQL文にバインドしようとしています。私は以下のコードを試しました。しかし、これはパラメータの数が設定されたクエリでのみ機能し、効率的な方法が必要であることがわかります。PHPでループする効率的なループパラメータ
switch($numparams){
case 0:
@$stmt->bind_param("");
break;
case 1:
@$stmt->bind_param($paramtypes, $param_arr0);
break;
case 2:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1);
break;
case 3:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2);
break;
case 4:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2,$param_arr3);
break;
case 5:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2,$param_arr3,$param_arr4);
break;
case 6:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2,$param_arr3,$param_arr4,$param_arr5);
break;
case 7:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2,$param_arr3,$param_arr4,$param_arr5,$param_arr6);
break;
case 8:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2,$param_arr3,$param_arr4,$param_arr5,$param_arr6,$param_arr7);
break;
case 9:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2,$param_arr3,$param_arr4,$param_arr5,$param_arr6,$param_arr7,$param_arr8);
break;
case 10:
@$stmt->bind_param($paramtypes, $param_arr0,$param_arr1,$param_arr2,$param_arr3,$param_arr4,$param_arr5,$param_arr6,$param_arr7,$param_arr8,$param9);
break;
}
ご覧のとおり、コードは完全に非効率的でスケーラビリティはありません。 パラメータの数に基づいてforループ内の変数の名前を動的に指定しようとしましたが、スイッチケースのループ内で別々のbind_param
ステートメントを持たずにbind_param
ステートメントに挿入する方法を理解できませんでした)。これを行う方法はないかもしれないが、私はそこにあるべきだと思う。どちらの場合でも、私はどんな助けにも感謝します。
私はあなたがもう一度あなたのデザインを見てする必要があると思います。 –
あなたの問題は完全に 'mysqli' APIの煩わしさにあります。 //典型的な回避策は 'call_user_func_array'または楕円演算子です(PHP> = 5.6) – mario