質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

9054閲覧

SQL文でのエラーをPHPに出力させたい

tetsuya19

総合スコア19

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/08/20 13:48

PHPの中にsql文のinsertを使用してレコードの追加処理を
しようとしています。

開発環境は、10.1.13-MariaDB - mariadb.org binary distribution
Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.23です。

実行したところ、phpでのエラーは出ていないのですが、実際に
データベースを確認すると、レコードの追加がされていません。
sql文でエラーがあったと思うのですが、エラーの吐き出し方を
教えてください。。

なお、ローカル環境の学習用なので、敢えて編集せずにそのまま
コードの一部を載せておきます。

実行結果としましては、会員登録が完了いたしました。の
メッセージが出力され画面上にエラーは表示されませんでした。
しかし、実際にデータベースのテーブルを確認すると、レコードは
追加されていませんでした。

insert文では、フィールドの順序通りに指定しています。
変数のエラー等、phpでエラーの出力はありませんでした。
なお、フィールドの第1項目はcodeでAutoIにしています。
第2項目はdateでTIMESTAMPにしているので、実質第3項目の
passwordから値を指定しています。
以下は、実際のコードのsql文の前後から抜粋します。
構文的におかしい部分があれば、それも含めてご教授ください。
皆様お忙しいとは思いますが、ぜひ教えて頂けたら助かります。

$lastmembercode=0;
$dsn='mysql:dbname=ranzan;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql='INSERT INTO student (password,name,email,postal1,postal2,address,tel,danjo,born) VALUES (?,?,?,?,?,?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=md5($password);
$data[]=$name;
$data[]=$email;
$data[]=$postal1;
$data[]=$postal2;
$data[]=$address;
$data[]=$tel;
if($danjo=='dan')
{
$data[]=1;
}
else
{
$data[]=2;
}
$data[]=$born;
$stmt->execute($data);

$sql='SELECT LAST_INSERT_ID()'; $stmt=$dbh->prepare($sql); $stmt->execute(); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $lastmembercode=$rec['LAST_INSERT_ID()'];

$dbh=null;

print '会員登録が完了いたしました。<br />';

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

php

1<?php 2 3ini_set('display_errors', 1); 4error_reporting(E_ALL); 5 6try { 7 $dsn = 'mysql:dbname=ranzan;host=localhost;charset=utf8'; 8 $user = 'root'; 9 $password = ''; 10 $dbh = new PDO($dsn, $user, $password); 11 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 12 $sql = 'INSERT INTO student (password,name,email,postal1,postal2,address,tel,danjo,born) VALUES (?,?,?,?,?,?,?,?,?)'; 13 $stmt = $dbh->prepare($sql); 14 $data = array(); 15 $data[] = md5($password); 16 $data[] = $name; 17 $data[] = $email; 18 $data[] = $postal1; 19 $data[] = $postal2; 20 $data[] = $address; 21 $data[] = $tel; 22 if ($danjo == 'dan') { 23 $data[] = 1; 24 } else { 25 $data[] = 2; 26 } 27 $data[] = $born; 28 $stmt->execute($data); 29 30 $lastmembercode = $dbh->lastInsertId(); 31} catch (Exception $e) { 32 var_dump($e); 33}

投稿2016/08/20 13:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetsuya19

2016/08/20 14:04

大変素早い回答ありがとうございます。 示して頂いたコードを参考にしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問