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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

4794閲覧

PHPのエラーの原因がわかりません。

yum_taro_potato

総合スコア7

MySQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/09/10 10:37

<?php define('DB_DATABASE', 'TaskManagement'); define('DB_USERNAME', 'user'); define('DB_PASSWORD', 'password'); define('PDO_DSN', 'mysql:host=localhost;dbname=', DB_DATABASE); //データソースネーム try{ $db=new PDO(PDO_DSN,DB_USERNAME,DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //データベースの切断 $db = null; }catch(PDOException $e){ echo $e->getMessage(); echo ('接続できませんでした'); exit; } $task_name = $_REQUEST['taskName']; $person = $_REQUEST['person']; $stmt = $db->prepare("insert into AllTasks(TaskName,Person) values(?,?)"); $stmt ->execute([$task_name,$person]); ?>

上のソースに対して以下のエラーメッセージが出ます。
Parse error: syntax error, unexpected 'stmt' (T_STRING), expecting variable (T_VARIABLE) or '$' in /Applications/XAMPP/xamppfiles/htdocs/php/newTask.php on line 23

ちなみに23行目は
$stmt = $db->prepare("insert into AllTasks(TaskName,Person) values(?,?)");です。
;の付忘れなど自分なりに原因を探しましたが見つかりません。
教えていただけたら幸いです。

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

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

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

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

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

kitaji0306

2017/09/10 12:30 編集

直接関係ないと思いますが、「define('PDO_DSN', 'mysql:host=localhost;dbname=', DB_DATABASE);」の第2引数部分が字列結合になっていないと思います。 ※DB_DATABASEが第3引数扱いになってしまっています。
yum_taro_potato

2017/09/10 14:16

ご回答ありがとうございます。正しくはdefine('PDO_DSN', 'mysql:host=localhost;dbname=, DB_DATABASE’);でしょうか?ただ直しても別のエラーが出てしまいます。SQLSTATE[HY000] [1045] Access denied for user 'user'@'localhost' (using password: YES)というエラーメッセージです。
kitaji0306

2017/09/10 23:05

正しくは『define('PDO_DSN', 'mysql:host=localhost;dbname='. DB_DATABASE);』になると思います。『.』で定義したDB_DATABASEを文字列結合してください。また、エラーメッセージを見る限り、syntax errorは出なくなっているのではないでしょうか?
m.ts10806

2017/09/11 01:24

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)
guest

回答2

0

$db = null;

したらその後で$dbは参照できなくないですか?

投稿2017/09/11 00:19

yambejp

総合スコア114583

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

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

0

php

1<?php 2 3$db = array( 4 'server' => 'localhost', 5 'username' => 'root', 6 'password' => '', 7 'dbname' => 'TaskManagement', 8 'charset' => 'utf8' 9); 10 11$dbConfig = array( 12 'dsn' => "mysql:{$db['server']};dbname={$db['dbname']};charset={$db['charset']}", 13 'username' => $db['username'], 14 'password' => $db['password'], 15 'options' => [ 16 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //エラー時に例外を発生させる 17 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //規定のフェッチモードをFETCH_ASSOC(連想配列)として設定 18 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, // MySQLのバッファクエリを使う 19 PDO::ATTR_EMULATE_PREPARES => false // プリペアステートメントのエミュレーションを無効化 20 ] 21); 22 23try{ 24 $dbh = new PDO($dbConfig['dsn'], $dbConfig['username'], $dbConfig['password'], $dbConfig['options']); 25}catch(PDOException $e){ 26 echo $e->getMessage(); 27 exit; 28}

PDOで接続したのに nullを入れるとそれ以降は無効なデータベースハンドルとなり参照できません
絶対に $db = nullをしてはいけません

$dbConfig['dsn']は「mysql:localhost;dbname=TaskManagement;charset=utf8」に変数展開されることを想定しています。

投稿2017/09/12 09:58

naohiro19_

総合スコア178

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問