DB登録処理のページでまたFatal error:が出てしまいます...
同じような質問が3回続いて申し訳ございません。
英語は本当にダメなので申し訳ないですが教えてください...
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\xampp\htdocs\xxx\register_human_thanks.php:34 Stack trace: #0 C:\xampp\htdocs\xxx\register_human_thanks.php(34): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\xxx\register_human_thanks.php on line 34
何が原因でどうすればよいでしょうか?
一応ソース載せておきます。
<?php session_start(); $dsn = 'mysql:dbname=test;host=localhost;charset=utf8'; $user = 'root'; $password = ''; $option = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); $pdo = new PDO($dsn, $user, $password, $option); $stmt = $pdo->prepare("INSERT INTO user_data() VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");//基本項目22個 $stmt->execute([ $_SEESION['join1']['email'], password_hash($_SEESION['join1']['pw'],PASSWORD_DEFAULT), $_SEESION['join1']['name1'], $_SEESION['join1']['name2'], $_SEESION['join1']['name3'], $_SEESION['join1']['name4'], $_SEESION['join1']['name5'], $_SEESION['join1']['name6'], $_SEESION['join1']['name7'], $_SEESION['join1']['year'], $_SEESION['join1']['month'], $_SEESION['join1']['day'], $_SEESION['join1']['gender'], $_SEESION['join1']['first_post'], $_SEESION['join1']['last_post'], $_SEESION['join1']['pref'], $_SEESION['join1']['city'], $_SEESION['join1']['town'], $_SEESION['join1']['building'], $_SEESION['join1']['tel1'], $_SEESION['join1']['tel2'], $_SEESION['join1']['tel3'] ]); $stmt = $pdo->prepare("INSERT INTO user_skill() VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");//スキル年数MAX10セット*2=20セット(40個) $stmt->execute([ $_SEESION['jion2']['programs1_1'], $_SEESION['jion2']['programs_year1_1'], $_SEESION['jion2']['programs1_2'], $_SEESION['jion2']['programs_year1_2'], $_SEESION['jion2']['programs1_3'], $_SEESION['jion2']['programs_year1_3'], $_SEESION['jion2']['programs1_4'], $_SEESION['jion2']['programs_year1_4'], $_SEESION['jion2']['programs1_5'], $_SEESION['jion2']['programs_year1_5'], $_SEESION['jion2']['programs1_6'], $_SEESION['jion2']['programs_year1_6'], $_SEESION['jion2']['programs1_7'], $_SEESION['jion2']['programs_year1_7'], $_SEESION['jion2']['programs1_8'], $_SEESION['jion2']['programs_year1_8'], $_SEESION['jion2']['programs1_9'], $_SEESION['jion2']['programs_year1_9'], $_SEESION['jion2']['programs1_10'], $_SEESION['jion2']['programs_year1_10'], $_SEESION['jion2']['programs2_1'], $_SEESION['jion2']['programs_year2_1'], $_SEESION['jion2']['programs2_2'], $_SEESION['jion2']['programs_year2_2'], $_SEESION['jion2']['programs2_3'], $_SEESION['jion2']['programs_year2_3'], $_SEESION['jion2']['programs2_4'], $_SEESION['jion2']['programs_year2_4'], $_SEESION['jion2']['programs2_5'], $_SEESION['jion2']['programs_year2_5'], $_SEESION['jion2']['programs2_6'], $_SEESION['jion2']['programs_year2_6'], $_SEESION['jion2']['programs2_7'], $_SEESION['jion2']['programs_year2_7'], $_SEESION['jion2']['programs2_8'], $_SEESION['jion2']['programs_year2_8'], $_SEESION['jion2']['programs2_9'], $_SEESION['jion2']['programs_year2_9'], $_SEESION['jion2']['programs2_10'], $_SEESION['jion2']['programs_year2_10'] ]); $stmt = $pdo->prepare("INSERT INTO user_qualification() VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");//資格年数MAX10セット(30個) $stmt->execute([ $_SEESION['jion2']['certificate1'], $_SEESION['jion2']['certificate_year1'], $_SEESION['jion2']['certificate_day1'], $_SEESION['jion2']['certificate2'], $_SEESION['jion2']['certificate_year2'], $_SEESION['jion2']['certificate_day2'], $_SEESION['jion2']['certificate3'], $_SEESION['jion2']['certificate_year3'], $_SEESION['jion2']['certificate_day3'], $_SEESION['jion2']['certificate4'], $_SEESION['jion2']['certificate_year4'], $_SEESION['jion2']['certificate_day4'], $_SEESION['jion2']['certificate5'], $_SEESION['jion2']['certificate_year5'], $_SEESION['jion2']['certificate_day5'], $_SEESION['jion2']['certificate6'], $_SEESION['jion2']['certificate_year6'], $_SEESION['jion2']['certificate_day6'], $_SEESION['jion2']['certificate7'], $_SEESION['jion2']['certificate_year7'], $_SEESION['jion2']['certificate_day7'], $_SEESION['jion2']['certificate8'], $_SEESION['jion2']['certificate_year8'], $_SEESION['jion2']['certificate_day8'], $_SEESION['jion2']['certificate9'], $_SEESION['jion2']['certificate_year9'], $_SEESION['jion2']['certificate_day9'], $_SEESION['jion2']['certificate10'], $_SEESION['jion2']['certificate_year10'], $_SEESION['jion2']['certificate_day10'] ]); $stmt = $pdo->prepare("INSERT INTO user_pr() VALUES (?, ?, ?, ?)");//その他自己PR $stmt->execute([ $_SEESION['join2']['major_cat'], $_SEESION['join2']['major_skill'], $_SEESION['join2']['agreement'], $_SEESION['join2']['pr'] ]); session_destroy(); ?>
6/20 14:11追記
プレースホルダーの数を修正し、user_data()の()を取り除いても一向にエラーが収まりません...
$stmt = $pdo->prepare("INSERT INTO user_data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");//基本項目22個 $stmt->execute([ $_SEESION['join1']['email'], password_hash($_SEESION['join1']['pw'],PASSWORD_DEFAULT), $_SEESION['join1']['name1'], $_SEESION['join1']['name2'], $_SEESION['join1']['name3'], $_SEESION['join1']['name4'], $_SEESION['join1']['name5'], $_SEESION['join1']['name6'], $_SEESION['join1']['name7'], $_SEESION['join1']['year'], $_SEESION['join1']['month'], $_SEESION['join1']['day'], $_SEESION['join1']['gender'], $_SEESION['join1']['first_post'], $_SEESION['join1']['last_post'], $_SEESION['join1']['pref'], $_SEESION['join1']['city'], $_SEESION['join1']['town'], $_SEESION['join1']['building'], $_SEESION['join1']['tel1'], $_SEESION['join1']['tel2'], $_SEESION['join1']['tel3'] ]);
同じ34行目で
$_SEESION['join1']['tel3']
の部分です。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in C:\xampp\htdocs\xxx\register_human_thanks.php:34 Stack trace: #0 C:\xampp\htdocs\IDH\register_human_thanks.php(34): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\xxx\register_human_thanks.php on line 34
14:36 追記
カラム名を指定してみると、エラーの結果が若干変わりました。
$stmt = $pdo->prepare("INSERT INTO user_data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in C:\xampp\htdocs\xxx\register_human_thanks.php:34 Stack trace: #0 C:\xampp\htdocs\xxx\register_human_thanks.php(34): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\xxx\register_human_thanks.php on line 34
$stmt = $pdo->prepare("INSERT INTO user_data(email, password, fname_kanji, lname_kanji, fname_kana, lname_kana, fname_roma, lname_roma, middle_name, birthday_year, birthday_month, birthday_day, gender, first_post, last_post, prefectures, city, town, building, tel1, tel2, tel3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'email' cannot be null' in C:\xampp\htdocs\xxx\register_human_thanks.php:34 Stack trace: #0 C:\xampp\htdocs\xxx\register_human_thanks.php(34): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\xxx\register_human_thanks.php on line 34
回答6件
あなたの回答
tips
プレビュー