0

テーブル 1 に VARCHAR(255) として定義された「年」フィールドがあり、テーブル 2 の「num_years」を「年」の値で更新する必要があります。「num_years」は INT として定義されます。

「年」が 3 として定義されている場合に「年」で「年」を更新しようとすると、正常に動作しますが、「年」を「フー」として定義すると、「年」が 0 で更新されます。

以前は関数を使用していたときにmysql_query、無効な列 'foo' などに関するエラーが生成されましたが、PDO では予期したときに例外がスローされませんでした。

このようにして、「years」が数値の場合、「num_years」が 0 で更新されないようにする必要があります。この場合、PDO には例外をスローするものが組み込まれていますか?

PDO トランザクションと準備済みステートメントを使用しています。

4

2 に答える 2

1

テーブル1からの年が「1年」のようなもので構成されている場合、SQLステートメントに入れる前に文字列であるかどうかを検証します表2のint列。

また、このようにして、入力フィールドのみのテキストなどのイベントを特別に処理し、それを int フィールドに 0 または -1 または何かとして設定し、後でトラップして表示時に検証して、「指定されていません」などと言うことができます同等。

それが理にかなっていることを願っています

于 2013-03-15T16:18:23.617 に答える
0

文字列変数を PDO に挿入する代わりに、 のようなものを挿入できます$delta = $year + 0。「foo」の場合は取得$delta = 0し、これを追加してnum_yearsも変更されません。

他の方法はもちろん型キャストなので、を使用します(int)$year

これは、PDO ではなく PHP で行う必要があります。

于 2013-03-15T16:24:06.777 に答える