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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

1296閲覧

データベースに接続したい

seep0619

総合スコア25

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2016/10/07 10:17

質問内容:
管理情報を
データベースに接続したい

エラーメッセージ:
$stmt=$dbh->prepare($sql);
の$dbh がnull表示になっている状態で
恐らくデータが飛んでないとか思います。

mysql:
設定できておりname間違いもないかと思われます。

*接続できない理由が不明確なため、
投稿させていだきました。よろしくお願いいたします。

1P**********************************

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>顧客管理情報ツール</title> </head> <body> <form action="DB_contol.php" name="form1" method="post"> <center>顧客管理情報ツール</center> <br /> <br /> 名 前<input type="text" name="name"> <br /> 住 所<input type="text" name="adress"> <br /> 電話番号<input type="text" name="tell"> <br /> e-mail<input type="text" name="email"> <br /> 紹介人数<input type="text" name="Introduction"> <br /> 当月売上金額<input type="text" name="Sales_proceeds"> <br /> 総売上金額<input type="text" name="total_amount"> <br /> <br /> <input type="submit" value="顧客管理" name="button1"> <br /> <br /> <input type="submit" value="入金確認" name="button2"> <br /> <br /> <input type="submit" value="一覧登録" name="button3"> </body> </html>

2P**********************************

<?php session_start(); $_SESSION["name"]; $_SESSION["adress"]; $_SESSION["adress"]; $_SESSION["tell"]; $_SESSION["email"]; $_SESSION["Introduction"]; $_SESSION["Sales_proceeds"]; $_SESSION["total_amount"]; ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>顧客管理情報ツール</title> </head> <body> <?php $name = $_SESSION['name']; $tell = $_SESSION['tell'];
$dsn = 'mysql:host=localhost;dbname=customer;charset=utf8'; $user = 'root'; $password = ''; $sql= 'INSERT INTO customer_management(name,email,tell) VALUES (?,?,?)'; $stmt=$dbh->prepare($sql); $data=array(); $data[]=0; $data[]=$name; $data[]=$email; $data[]=$tell; $data[]=$adress; $stmt->execute($data); $sql='SELECT LAST_INSERT_ID()'; $stmt=$dbh->prepare($sql); $stmt->execute(); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $lastcode=$rec['LAST_INSERT_ID()']; $sql='UNLOCK TABLES'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh=null;

?>

<form action="DB_main.php" method="post"> <center>顧客管理情報ツール(検索)</center> <br /> <br /> [名 前]<?php echo $_SESSION["name"]?> <br /> <br /> [住 所]<?php echo $rec["adress"]?> <br /> <br /> [電話番号]<?php echo $_SESSION["tell"]?> <br /> <br /> [e-mail]<?php echo $_SESSION["e-mail"]?> <br /> <br /> [紹介人数]<?php echo $_SESSION["Introduction"]?> <br /> <br /> [当月売上金額]<?php echo $_SESSION["Sales_proceeds"]?> <br /> <br /> [トータル売上金額]<?php echo $_SESSION["total_amount"]?> <br /> <br /> <input type="submit" value=一覧画面 name="DB_list.php"> <br /> <br /> <input type="submit" value=戻る name="DB_main.php"> </body> </html>

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

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

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

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

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

guest

回答2

0

ベストアンサー

以下で$dsnを定義していますが、

PHP

1$dsn = 'mysql:host=localhost;dbname=customer;charset=utf8';

これを利用してDBに接続するコードがありません。
当然、上記に定義した文字列型からメソッドを呼ぼうとしており、そんなメソッドはないということになります。

PHP

1$stmt=$dbh->prepare($sql);

以下のように、まずはDB接続オブジェクトを生成する処理が必要ですね。
http://php.net/manual/ja/pdo.connections.php

投稿2016/10/07 13:20

goute

総合スコア216

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

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

seep0619

2016/10/08 13:09

ご教授ありがとうございます。 早速転記したのですが次は 13行目 $stmt->execute($data);が Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /Applications/XAMPP/xamppfiles/htdocs/phpkiso/DB/DB_Customer management.php on line 35 エラー分が発生しており、””送られてる値が違う””と 言うところまでは把握できているのですが、 どのように改善したらいいのかわかりません。 教えていただけると幸いです。 お願い致します。 (データベース箇所抜粋) ” 1 $dsn = 'mysql:host=localhost;dbname=customer;charset=utf8'; $user = 'root'; $password = ''; $dbh = new PDO($dsn, $user, $password); 5  $sql= 'INSERT INTO customer_management(name,email,tell) VALUES (?,?,?)'; $stmt=$dbh->prepare($sql); $data=array(); $data[]=0; $data[]=$name; 10 $data[]=$email; $data[]=$tell; $data[]=$adress; 13 $stmt->execute($data); $sql='SELECT LAST_INSERT_ID()'; 15 $stmt=$dbh->prepare($sql); $stmt->execute(); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $lastcode=$rec['LAST_INSERT_ID()']; $sql='UNLOCK TABLES'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh=null; ?> ”
goute

2016/10/08 17:17

takasima20さんも指摘されていますが、INSERT文で記載したパラメータ数と実際に設定している数パラメータ数が異なっていますね。
seep0619

2016/10/17 22:31

解決致しました!ご回答ありがとうございます! またよろしくお願いいたします。
guest

0

$dbh を設定してるとこがないですね。

投稿2016/10/07 10:22

takasima20

総合スコア7458

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

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

seep0619

2016/10/08 13:09

ご教授ありがとうございます。 早速転記したのですが次は 13行目 $stmt->execute($data);が Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /Applications/XAMPP/xamppfiles/htdocs/phpkiso/DB/DB_Customer management.php on line 35 エラー分が発生しており、””送られてる値が違う””と 言うところまでは把握できているのですが、 どのように改善したらいいのかわかりません。 教えていただけると幸いです。 お願い致します。 (データベース箇所抜粋) ” 1 $dsn = 'mysql:host=localhost;dbname=customer;charset=utf8'; $user = 'root'; $password = ''; $dbh = new PDO($dsn, $user, $password); 5  $sql= 'INSERT INTO customer_management(name,email,tell) VALUES (?,?,?)'; $stmt=$dbh->prepare($sql); $data=array(); $data[]=0; $data[]=$name; 10 $data[]=$email; $data[]=$tell; $data[]=$adress; 13 $stmt->execute($data); $sql='SELECT LAST_INSERT_ID()'; 15 $stmt=$dbh->prepare($sql); $stmt->execute(); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $lastcode=$rec['LAST_INSERT_ID()']; $sql='UNLOCK TABLES'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh=null; ?> ”
takasima20

2016/10/08 14:32

insert文では3つのvalueを設定するようになっているようですが、 executeでは5つのものを設定しているように見えます。
seep0619

2016/10/17 22:31

解決致しました!ご回答ありがとうございます! またよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問