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

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

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

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

解決済

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

tetsuya19
tetsuya19

総合スコア0

SQL

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

1回答

0評価

0クリップ

6404閲覧

投稿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 />';

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

SQL

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