0
0

PHPでSQL文を書いて実行するとなんかエラーが出ていた話

Posted at

はじめに

前にPHPでSQL文を変数に代入して実行しようとしていると、SQL文はあっているはずなのになぜかHTTP ERROR 500が返ってきていました。

原因のコード
PHP
 $sql = "INSERT INTO sample_table (id,name,age,birthday) VALUES ({$_POST['id']},"{$_POST['name']}",{$_POST['age']},"{$_POST['birthday']}")";

原因

原因はおそらく、"{$_POST['name']}"のダブルクォーテーションがあることで、この時点で変数の値が終了しているという判定になったからだと考えられます。

解決方法

"{$_POST['name']}"や、"{$_POST['birthday']}"のダブルクォーテーションをシングルクォーテーションに置き換えることで解決しました。

PHP
$sql = "INSERT INTO sample_table (id,name,age,birthday) VALUES ({$_POST['id']},'{$_POST['name']}',{$_POST['age']},'{$_POST['birthday']}')";

まとめ

この作業をしているとき、私はVIエディタで編集をしていたので初歩的なミスかもしれませんが、気づくのが遅れました。VSCodeなどの高度なエディタだと赤文字で知らせてくれるかもしれないので、VSCodeなどを使うようにすることでもエラーを減らせるかもしれないです。

おまけ

このエラーについて調べていると、シングルクォーテーションとダブルクォーテーションで意味合いが少し異なるらしいのでまとめます。
' 'だとくくってある文字はすべて文字列として認識されるので変数があってもそれは文字列として認識されます。
対して" "だと文字列の中に変数があるとそれは変数内の値が認識されます。
つまり、変数を扱いたい場合は" "でくくらないといけないらしいですね。
いままであまり考えずにしていたので勉強になりました。

参考資料

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0