• 締切済み

PHP pdo データが無い場合とある場合

tablename( id int not null, name text not null, age int ); 的なテーブルがあったとして、id番号と名前は必ずデータがあるが、年齢はデータがあったり無かったりするとします。 $id = 1; $name = "太郎"; $age = ""; だったり $age = "25";だったり シンプルにinsert 書きたいのですが、やはり$ageが空文字の場合と数字で構成される文字の場合でわけないと書けないでしょうか? $sql = "insert into tablename( id,name,age) values (:id,:name,:age); $stmt = $pdo->prepare($sql); $stmt->bindValue(":id", $id, PDO::PARAM_INT); $stmt->bindValue(":name", null, PDO::PARAM_STR); if ($age === "") { $stmt->bindValue(":age ", null, PDO::PARAM_NULL); } else { $stmt->bindValue(":age ", $age , PDO::PARAM_INT); } とわけないと無理?

みんなの回答

  • catpow
  • ベストアンサー率24% (620/2527)
回答No.2

No.1です。 PHP 7.0からは、"??"演算子が使えるそうです。 PHP 7は、PHP 5よりも倍近いパフォーマンスを出しているようですから、PHPを7にバージョンアップすれば、コーディングが少し楽になるかもしれませんね。 ただ、7では、いくつか構文解釈の変更があるようですので、5の既存ソースだとエラーになるところがあるかもしれません。

muuming2001
質問者

お礼

??学んでみま。 先日古いワードプレスを7に持っていったらfatalエラーでした。

  • catpow
  • ベストアンサー率24% (620/2527)
回答No.1

>>$ageが空文字の場合と数字で構成される文字の場合でわけないと書けないでしょうか? PHPに限らず、他言語を使っていても、データベースの文字、数値や日付項目がNULLの場合については、それらに対応して、コードを対応させる記述が増えますね。 それが嫌だから、数値項目であっても文字形式でデータを持つという方もいたようです。 また、C#では、場合分けするのは仕方ないとしても、入力する文字数を減らすために、"??" なんて新しい演算子を増やすなどして、コーディングが楽になるようにバージョンアップし、プログラマさんに喜ばれています。 まあ、これって、仕方ないですね。

muuming2001
質問者

お礼

なるほど、やっぱりしょうがないですね。 コツコツ書こうと思います。

関連するQ&A