Zend のinsert()
関数を使用して、データベース テーブルにレコードを挿入しています。例えば。データベース モデル オブジェクトから、関数を呼び出しZend_Db_Table's insert()
て、受信データを配列として渡します$data
。
$this->insert($data);
$data
配列です。の内容は$data
、整数、お金、テキストなどのデータ型が混在しています。
入ってくる配列を検証するために$data
、関数を書きましたverifyData($data)
。
private function verifyData(&$data) {
//Trim whitespace characters from incoming data.
foreach($data as $key => $val)
{
$data[$key] = trim($val);
if(empty($data[$key])) {
unset($data[$key]);
}
}
//Checking for not null table columns
if( empty($data['id']) || empty($data['name']) || empty($data['age'])) {
error_log("One of the required fields is missing");
return false;
}
else {
return true;
}
}
上記のように、この関数:
- 入力データをトリミングし、$data 配列のフィールドが空の場合は設定を解除します。
- 次に、この関数は必須フィールドの存在をチェックし、必須フィールドが欠落している場合は false を返します。この特定の定義では、ID、名前、および年齢が必要です。ただし、検証したい必須ではないフィールドが他にもある可能性があります。例: $data['salary']
上記の関数に次の検証を追加する際にヘルプ/提案が必要です/他の可能な方法で:
- 配列の各要素のデータ型が期待どおりかどうかを確認したい/データを挿入する前に特定のデータ型に変換したい。
- SQL インジェクションの脅威に対処できるように、受信データを変換/処理したいと考えています。
データ型チェックを処理する 1 つの方法は、受信データ配列をループ処理し、特定の列の値をデータ型に変換して検証することです。しかし、上記の2点を実装するための効率的/標準的な方法があるかどうかを知りたい.
シナリオの例は、たとえば私の Web フォームで、新しい人が db に追加されたときに、名前と年齢が必須である名前、年齢、および給与を入力する必要があります。年齢と給与は整数のみで入力してください。この制限を PHP レベルで実装したいと考えており、Zend Framework を使用しています。
ヘルプ/提案をいただければ幸いです。