teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

edit

2021/12/03 12:01

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  色々とツッコミどころはあります。
2
- - [PDOStatement::execute](https://www.php.net/manual/ja/pdostatement.execute.php)の返却値はtrue/falseですが、isset()で確認されてるので、`while ($row = fgetcsv($fp)) {`に入れば必ず条件式は満たされます(変数の内容ではなく変数の存在確認だから)
2
+ - [PDOStatement::execute](https://www.php.net/manual/ja/pdostatement.execute.php)の返却値はtrue/falseですが、isset()で確認されてるので、` $executed = $stmt->execute($row);`に入れば必ず条件式は満たされます(変数の内容ではなく変数の存在確認だから)
3
3
  - SQLこれ、VALUES()の中には「セットしたい値」を入れるのですが、カラムしか入ってません。エラーにはならないようですが、おそらくカラムの初期値でデータが入るはず。
4
4
  ただ、通常プログラムから実行するときは`?`なり名前付きパラメータなりで値をバインドするものでは。
5
5
  - `if ($row === array(null)) {`これが今ひとつピンとこない表現ですが[fgetcsv](https://www.php.net/manual/ja/function.fgetcsv.php)の返却値からすると、`is_null($row[0])`とするとか、列数が決まってるなら`count($row[]) === 列数`のほうが良い気がします(つまり既にある次のチェックだけで良い)。