4

このようなオブジェクトのユーザーがいます。

$user = new User();
$user->name = 'Name';
$user->age = 34;

私のデータベースには5つのフィールドがあります。

id, name, age, location, reputation

(すべてのテーブルに対して)次のSQLを使用してテーブルからすべてのフィールドを動的に収集するメソッドがあります。このようにして、INSERTステートメントに入れるプレースホルダーの数を動的に取得できます。

SHOW FIELDS FROM users
SHOW FIELDS FROM questions
SHOW FIELDS FROM topics

次に、テーブル内のフィールドの数をカウントし、プレースホルダーでいっぱいの文字列を準備し、それをPDOクエリに自動的に挿入して、次のようにするcreateメソッドを作成しました。

INSERT INTO users VALUES (?, ?, ?, ?, ?)

次に、$ userオブジェクトを取得し、そのオブジェクトが持つすべてのプロパティから配列を作成し、その配列を実行パラメーターのPDOプリペアドステートメントに渡します。これは正常に機能し、関数はデータベースにデータを挿入します。

私の問題は、オブジェクトのすべてのプロパティがまだ入力されていないことがあるため、execute関数にフィードする配列の残りの部分に空の文字列を入力することです。整数を取るフィールドに到達すると、致命的なエラーが発生し、機能しなくなります。コードの各フィールドに正しいデータ型を記述せずに、データベースに空のフィールドを動的に挿入できるようにするにはどうすればよいですか?これはすべて動的に行われるため、整数または空の文字列をそこに配置することを事前に知ることはできません。一部のプレースホルダーを完全に除外する方法はありますか?他の解決策はありますか?

4

1 に答える 1

5

NULLを受け入れるようにオプションのmysqlフィールドを設定します。

于 2012-08-26T18:43:29.383 に答える