前提・実現したいこと
PHPとMySQLを使用してPHPMyAdmin内のデータテーブルにデータを新しく挿入し、データテーブルの中にあるデータの一覧を表示させたいです。
具体的には、別のページで入力された名前と学籍番号、学部、血液型のデータをすでに作ってあるデータテーブルに挿入を目指しています。
しかし、どれだけ打ち間違いを直してもこのエラーが解消できません。
お手数をおかけしますが、ご返答のほどよろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージ Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1','3')' at line 1 in \public_html\web\reg_gakusei_meibo.php:9 Stack trace: #0 \public_html\web\reg_gakusei_meibo.php(9): PDO->query('insert into public...') #1 \public_html\web\ex4-2reg.php(70): include('\\\public_html\web...') #2 {main} thrown in \public_html\web\reg_gakusei_meibo.php on line 9
該当のソースコード
ex4-2reg.php
php
1<!doctype html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<link rel="stylesheet" href="ex4-2.css"> 6<title>ex4 データ登録</title> 7</head> 8 9<center> 10<body bgcolor="DDC450"> 11<h1>ex4 データ登録</h1> 12 13<?php 14 $r_shimei = htmlspecialchars($_POST["c_shimei"]); 15 print "氏名:".$r_shimei."<br><br>"; 16 17 $r_gakuseki = htmlspecialchars($_POST["c_gakuseki"],ENT_QUOTES,"UTF-8"); 18print "学籍番号:" . $r_gakuseki . "<br><br>"; 19#~省略//データの数字によって何を表示するかの分岐~ 20include "reg_gakusei_meibo.php"; 21 print "<br>データ登録完了!<br><br>"; 22 ?> 23 <form method = "post" action = "ex4-2datainput.php"> 24 <input class="clear" type = "submit" value = "入力"> 25 </form> 26<br><br> 27 28</body></center> 29 30</html> 31
####reg_gakusei_meibo.php
php
1<? 2include("mysql_access.php"); 3$db_name = "#ユーザー名"; 4$db_pass = "#パスワード"; 5$tbl_name = "gakusei_meibo"; 6$con = db_connect($db_name,$db_pass); 7$q = "insert into $db_name.$tbl_name(name,no,gakubu,blood)value('$r_shimei','$r_gakuseki,'$r_gakubu','$r_blood') 8 "; 9$result = $con->query($q); 10print "SQL文:".$q."<br>"; 11print ("登録したデータは以下の通りです.<br>"); 12$q = "select * from $tbl_name"; 13datalist_display($result); 14$con = null; 15?>
myspl_access.php
php
1<?php 2//======================== 3// PDO update:2018a 4//======================== 5 6 7//ー------------------ (1) ------------------------- 8function db_connect($db_name, $db_pass){ 9 10 $db_type = "mysql"; 11 12 $db_host = "localhost"; 13 $db_user = $db_name; 14 15 16 // 文字化け対策 17 $options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET CHARACTER SET 'utf8'"); 18 19 // PHPのエラーを表示するように設定 20 error_reporting(E_ALL & ~E_NOTICE); 21 22 // データベースの接続 23 $dsn = $db_type . ':host=' . $db_host . ';dbname=' . $db_name . ';charset=utf8'; 24 // print ($dsn); 25 try { 26 $dbh = new PDO($dsn, $db_user , $db_pass, [ 27 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 28 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 29 30 ]); 31// print("DB接続成功!"); 32 } catch (PDOException $e) { 33// print ("DB接続エラー ") ; 34 exit($e->getMessage()); 35 } 36 return $dbh; 37} 38 39 40//ー------------------ (2) ------------------------- 41function datalist_display($result){ 42 43 $dat_cnt = $result->rowCount(); 44 $col_cnt = $result->columnCount(); 45 46 print "データの個数 : " . $dat_cnt . "<br>"; 47 48 print "<table border=1>"; 49 50 // fields 51 52 print "<tr>"; 53 for ($i=0; $i < $col_cnt ;$i++){ 54 $col_name =$result->getColumnMeta($i)['name']; 55 print "<th>$col_name</th>"; 56 } 57 print "</tr>"; 58 59 // data 60 while ($row = $result->fetch(PDO::FETCH_ASSOC)) 61 { 62 print "<tr>"; 63 foreach ($row as $val) 64 { 65 print "<td>$val</td>"; 66 } 67 print "</tr>"; 68 } 69 print "</table>"; 70 71} 72 73?>
補足情報(FW/ツールのバージョンなど)
OS:Windows10
作成ツール:AdobeDreamweaver CC 18.2
サーバのバージョン: 8.0.18 - MySQL Community Server - GPL