質問: "'".$namae."','".$nen."','".$sex."','".$jusyo."', '".$denwa."','".$mail."','".$index."','".$naiyou."'"; $d->query("INSERT INTO form1 ($karams) values ('$value')"); ### 試したこと $d->query("INSERT INTO form1 (namae,nen,sex,jusyo,tel,mail,index,toi) values ('$namae','$nen','$sex','$jusyo', '$denwa','$mail','$index','$naiyou')"); ↑これでもデータベースに記入できませんでした。 一応接続成功は出ているのでmysqlには入れているとは思います。
回答: prepare()→bindValue()→execute()の繰り返しをして、 最後にcommit()しよう。 PHP: PDOStatement::bindValue - Manual ``` try{ $d = new PDO("mysql:host=localhost;dbname=db;charset=utf8mb4","root","1234",[ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, ]); print "接続成功"; $d->beginTransaction(); // トランザクション開始 $s = $d->prepare("INSERT INTO form1 (`namae`,`nen`,`sex`,`jusyo`,`tel`,`mail`,`index`,`toi`) values (:namae,:nen,:sex,:jusyo,:tel,:mail,:index,:toi)"); // SQLインジェクション対策にはprepare $s->bindValue(':namae', $namae, PDO::PARAM_STR); $s->bindValue(':nen', $nen, PDO::PARAM_STR); $s->bindValue(':sex', $sex, PDO::PARAM_STR); $s->bindValue(':jusyo', $jusyo, PDO::PARAM_STR); $s->bindValue(':tel', $tel, PDO::PARAM_STR); $s->bindValue(':mail', $mail, PDO::PARAM_STR); $s->bindValue(':index', $index, PDO::PARAM_STR); $s->bindValue(':toi', $toi, PDO::PARAM_STR); $s->execute(); $d->commit(); // コミットも忘れずに } catch (PDOException $e) { exit('データベース接続失敗。'.$e->getMessage()); } ``` みたいな書き方になるかと。 接続時に例外をスローするようにしたのと、utf8接続指定したのと。 カラム名をバッククォートで囲むと、予約語とかぶっても安心。 もしも数値型のカラムの場合は、PDO::PARAM_STRじゃなくPDO::PARAM_INTを使います。