MySQL nuexpected(T_STRING

このQ&Aのポイント
  • ローカル開発環境でphpとMysql接続の勉強をしている者です。下記コードにてunexpected (T_STRING)と出て詰まっています。
  • スペルミスを注意して確認しましたが一人では解決できません。わかる方に回答をお願いします。
  • PHPでのMySQL接続時にunexpected (T_STRING)エラーが発生しています。詳しい方からの回答をお待ちしています。
回答を見る
  • ベストアンサー

MySQL nuexpected(T_STRING

ローカル開発環境にてphpとMysql接続の勉強をしている者です。 下記コードにて   } catch (PDOException $e) { 行にunexpected (T_STRING)と出て詰まっています スペルミスの注意して確認しましたが一人ではどうにも解りません...わかる方回答お願いしますm(_ _)m <?php define('DB_DATABASE', 'takagi_db'); define('DB_USERNAME', 'dbuser'); define('DB_PASSWORD', 'takagi'); define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE); try { //connect $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $db->query("select * from users"); //全件抽出 $users = $stmt->fetchAll(PDO::FETCH_ASSOC);//FetchAll(抽出型指定) foreach ($users as $user){ } echo $stmt->rowCount() . "records found.";   } catch (PDOException $e) { echo $e->getMessage(); exit; } ?>

  • MySQL
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5040/13168)
回答No.1

echo $stmt->rowCount() . "records found."; の後と、} catch (PDOException $e) { の前に全角スペースが入っています。

ichiro289
質問者

お礼

ありがとうございました!!!(泣

関連するQ&A

  • PDOでLIKE検索

    LIKE検索でつまづいでいます。 こまめにチェックしながら進めており、エラーが表示されるわけではないのですが、うまくキーが引き渡せていないのが原因だとは思うのですが、どう対策すればいいかというところでつまづいています。 文字コードの指定、直接パラメーターを使わない、プレースホルダの使い方、キーの渡し方等アドバイスをいただけないでしょうか。 ※全件表示だと動作します。また、$keyの中身はきちんと渡っているのは確認できましたが、select文の部分に反映されていないような状態。。。 【検索フォーム】 <form name="" method="POST" action="result.php"> <button type="submit" name="area" value="新宿">新宿</button> </form> 【検索結果】 define('DB_HOST', 'localhost'); define('DB_USER', 'ユーザー名'); define('DB_PASSWORD', 'DBパスワード'); define('DB_NAME', 'DB名'); try { $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USER,DB_PASSWORD, array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'") ); } catch (PDOException $e) { echo $e->getMessage(); exit; } $key = "%".$_POST['area']."%"; $stmt = $dbh->prepare('SELECT * FROM salon WHERE area LIKE :area'); $stmt->bindParam(':area', $key, PDO::PARAM_STR); $stmt->execute(); ?> <body> <?php foreach ($stmt as $row) : ?> <?php echo htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($row['area'],ENT_QUOTES,'UTF-8'); ?> <?php endoforeach; ?> </body> アドバイスをいただければ幸いです。

    • ベストアンサー
    • PHP
  • DB接続の関数化

    下記のデータベースに接続する関数の意味は「MySQLに接続して、PDOクラスで接続したデータベース情報を返す」で合っていますか? function get_db_connect(){ // MySQL用のDSN文字列 $dsn = 'mysql:dbname='. DB_NAME .';host='. DB_HOST .';charset='.DB_CHARSET; try { // データベースに接続する $dbh = new PDO($dsn, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4')); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { exit('接続できませんでした。理由:'.$e->getMessage() ); } return $dbh; }

    • ベストアンサー
    • PHP
  • php html 混在 htmlに異常なエラー??

    いつも大変お世話になり誠にありがとうございます。 標記の件。 PhpStormにphpとhtmlを混在させると、htmlにエラー警告が イッパイ出ます。異常です。 添付の通り、正規にやっているのにhtmlにエラー警告が イッパイ出ます。 実際にはエラーじゃないのに、実行するとエラーになりました。 おかしいです。 これを回避するにはどうしたらよいでしょうか? 度々申し訳ございません。 教えてください。 宜しくお願い申し上げます。      記 <?php $dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8'; $user = 'blog_user'; $pass = 'rhythm0!KT'; try { $dbh = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); //echo '接続成功'; //①SQLの準備 $sql = "SELECT * FROM blog"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(PDO::FETCH_ASSOC); var_dump($result); $dbh = null; }catch(PDOException $e) { echo '接続失敗'.$e->getMessage(); exit(); } <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ブログ一覧</title> </head> <body> <h2>ブログ一覧</h2> <table> <tr> <th>タイトル</th> <th>カテゴリー</th> <tr> <?php foreach ($result as $column):?> <tr> <td><?php echo $column['id'] ?></td> <td><?php echo $column['title'] ?></td> <td><?php echo $column['category'] ?></td> <?php endforeach; ?> </tr> </body>

  • this->何故?エラー???

    いつもお世話になりありがとうございます。 標記の件。 26行目がどうしてもエラーになります。 エラーメッセージは Fatal error: Uncaught Error: Undefined constant "this" in C:\xampp\htdocs\dbc.php:26 Stack trace: #0 C:\xampp\htdocs\index.php(4): Dbc->getAll() #1 {main} thrown in C:\xampp\htdocs\dbc.php on line 26 です。 度々申し訳ございません。 アドバイスの程、宜しくお願い申し上げます。      記 <?php class Dbc { protected $table_name; private function dbConnect() { $dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8'; $user = 'blog_user'; $pass = 'rhythm0!KT'; try { $dbh = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗' . $e->getMessage(); exit(); }; return $dbh; } public function getAll() { $dbh = this->dbConnect();  ★ここが26行目 //①SQLの準備 $sql = "SELECT * FROM this->$table_name"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(PDO::FETCH_ASSOC); return $result; $dbh = null; } public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function getById($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = this->dbConnect(); $stmt = $dbh->prepare("SELECT * FROM this->$table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if (!$result) { exit('本文がありません。'); } return $result; } public function blogCreate($blogs) { $sql = 'INSERT INTO blog(title, content, category, publish_status) VALUES (:title, :content, :category, :publish_status)'; $dbh = this->dbConnect(); $dbh->biginTransaction; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->execute(); $dbh->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } } ?>

    • ベストアンサー
    • PHP
  • 簡単な投稿サイトを作りたい

    簡単な投稿サイトを作りたいのですが、下記のようにDBデータを表記することとDBにデータを入れることは何とか出来たのですが、実際に投稿サイトを作る場合、 inputに入力してもらった情報をDBのカラムに入れて、それを表記したい要素に渡してブラウザ上に表記し、削除ボタンを押したらカラムのデータを空にして表記していた要素を削除しないといけないですよね? これらの作業はすべてphpで行うよりサーバの負担を避けるためにinputに入力された文字列をphpの変数に入れるまではajaxを使ったjsで行うべきでしょうか? その場合どうやってphpのこの変数に入れるとするのでしょうか? そして$stmt->execute(array(値を受け取ったphpの変数名)); とすれば問題なくカラムにデータが入るでしょうか? 正直難しくてあまり検討が付きません。 ここまで来るとlaravelを使った方がよいのでしょうか? 生では厳しいですか? $db_host = "localhost"; // データベースのホスト $db_name = "toukoutest"; // データベースの名前 $db_user = "root"; // データベース接続ユーザー $db_pass = ""; // データベース接続パスワード // データベース接続を確立 try { $db = new PDO("mysql:host={$db_host};dbname={$db_name};charset=utf8", $db_user, $db_pass); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // エラーモードの設定 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // prepareのエミュレーションを停止 } catch (PDOException $e) { // エラー発生時 exit("データベースの接続に失敗しました"); } // データの問い合わせ $rows_post = array(); // 配列の初期化 try { // toukoutableの部分がテーブル名。itemの部分がカラム(フィールド)名 $stmt = $db->prepare("SELECT * FROM toukoutable ORDER BY item DESC"); $stmt->execute(); // クエリの実行 $rows_post = $stmt->fetchAll(); // SELECT結果を二次元配列に格納 } catch (PDOException $e) { // エラー発生時 exit("クエリの実行に失敗しました"); } if (count($rows_post) > 0) { echo '<ul>'; foreach ($rows_post as $row) { printf('<li>%s</li>', $row['item']); } echo '</ul>'; } else { // 取得行数が 0 だったときの処理 } // データをデータベースに入力 $stmt = $db->prepare('insert into `add` (addcol2) values (?)'); $stmt->execute(array('値222'));

    • ベストアンサー
    • MySQL
  • PDOのprepareでLIKEの部分一致が使えません・・

    http://d.hatena.ne.jp/Sybian/20070521/p1 のサイトの例のように、LIKE '%文字列%' をprepareしようとしたのですが上手く結果が返りません。 PDOのプリペアステートメントは、 LIKEの部分一致や先頭一致に非対応なのでしょうか? $query="SELECT * FROM table WHERE id=:id OR like name='%:name%'"; $pdo=new PDO('mysql:host=localhost;dbname=database','user','password'); $stmt=$pdo->prepare($query); $stmt->bindValue(':id',$id,PDO::PARAM_INT); $stmt->bindValue(':name',$name,PDO::PARAM_STR); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC);

    • ベストアンサー
    • PHP
  • phpでMysqlに接続し掲示板を作りたいのですが

    質問させて頂きます。 ご存じの方がおられましたらご享受くださいませ。 phpをつかって MySQLに接続し掲示板を作ろうとしていますが 参考書に書いてある通りに書きましたが動きません。 どこか記載がおかしいのでしょうか… SQL初心者で完全にハマっております。 ご存じの方がおられましたら是非教えてくださいませ。 宜しくお願いいします!! ※接続はできています。 多分インサートあたりが反応していません。 プレペアドステートメントが変なのかな? <?php include("../header.php");?> <?php $savepath = dirname(_FILE_).'/chatlog.db'; $script_name = $_SERVER["SCRIPT_NAME"]; $dsn = 'mysql:dbname=DB名;host=ホスト'; $user = 'ユーザ名'; $password = 'パスワード'; try { $dbh = new PDO($dsn, $user, $password); echo 'MySQL DataBase と接続しました。'; $dbh->query('SET NAMES utf8'); } catch (PDOException $e) { echo 'データベースに接続できません。'.$e->getMessage(); } $create_query = <<< _SQL_ CREATE TABLE IF NOT EXISTS chatlog ( log_id INTEGER PRIMARY KEY, name TEXT, body TEXT, ctime INTEGER ); _SQL_; $db->exec($create_query); if (isset($_GET["name"]) && isset($_GET["body"])) { if ($_GET["name"] == "" || $_GET["body"] == "" ) { echo "<p>名前と本文は必ず入力してください。</p>";exit; } $template = "INSERT INTO chatlog (name,body,ctime)". "VALUES(?,?,?);"; $stmt = $db->prepare($template); $stmt->execute(array($_GET["name"],$_GET["body"],time())); header("location: $script_name"); exit; } echo <<< _FORM_ <h3>チャット</h3> <form action="$script_name" method="GET"> 名前:<input type="text" name="name" size="8" /> 本文:<input type="text" name="body" size="40" /> <input type="submit" value="書込" /> </form> _FORM_; $select_query = "SELECT * FORM chatlog ORDER BY log_id DESC"; $stmt = $db->query($select_query); foreach ($stmt as $row) { $name = htmlspecialchars($row["name"]); $body = htmlspecialchars($row["body"]); $ctime = date("H:i:s", $row["ctime"]); echo "($ctime) $name &gt; $body"; } ?> <?php include("../footer.php");?>

    • ベストアンサー
    • PHP
  • phpのコードでうまく動かず困っています

    現在ある書籍でログイン機能の基礎を学んでいるのですが、エラーが出て困っています。 書籍内のコードや付属のサンプルファイルの物をいれたり確認したりするのですがエラーがでます。 エラー Fatal error: Call to a member function bindParam() on a non-object in C:\xampp\htdocs\tennis\login.php on line 15 (この15行目は〇の部分です) コード <?php session_start(); //セッション開始 if(isset($_SESSION['id'])){ //セッションにユーザーIDがある(ログインしている) header('Location:index.php'); }else if(isset($_POST['name']) && isset($_POST['password'])){ $dsn = 'mysql:host=localhost; dbname=tennis; charset=utf8'; $user ='tennisuser'; $password = 'password'; try{ $db = new PDO($dsn, $user, $password); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt = $db->prepare("SELECT * FROM users WHERE name=:name AND password=:pass"); ○$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR); $stmt->bindParam(':pass', sha1($_POST['password']), PDO::PARAM_STR); //クエリ実行 $stmt->execute(); if($row = $stmt->fetch()){ //ユーザーが存在していたので、セッションにユーザーIDをセット $_SESSION['id'] = $row['id']; header('Location:index.php'); exit(); }else{ //1レコードも取得できなかった場合 //ユーザー名・パスワードは間違っている可能性があるのでもう一度ログインフォームを表示 header('Location:login.php'); exit(); } }catch(PDOException $e){ die('エラー:'.$e->getMessage()); } }else{ //ログインしていない場合はログインフォームを表示 ?> <html> ~省略~

    • ベストアンサー
    • PHP
  • 突如!接続エラー!?php

    いつもお世話になりありがとうございます。 標記の件。 下記のエラーがlocalhost/index.php/で出ました。 接続失敗SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for $host failed: ���̂悤�ȃz�X�g�͕s���ł��B 大変恐縮ではございますが、下記のコードを吟味して頂けないでしょうか? 度々申し訳ございません。 宜しくお願い申し上げます。      記 index.php <?php require_once ('blog.php'); $blog = new Blog(); $blogData = $blog->getAll(); function h($s){ return htmlspecialchars($s, ENT_QUOTES,"UTF-8"); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ブログ一覧</title> </head> <body> <h2>ブログ一覧</h2> <p><a href="/form.html">新規作成</a></p> <table> <tr> <th>タイトル</th> <th>カテゴリー</th> <th>投稿日時</th> <tr> <?php foreach ($blogData as $column): ?> <tr> <td><?php echo h($column['title']) ?></td> <td><?php echo h($blog->setCategoryName($column['category'])) ?></td> <td><?php echo h($column['post_at']) ?></td> <td><a href="/detail.php?id=<?php echo $column['id'] ?>">詳細</a></td> <td><a href="/update_form.php?id=<?php echo $column['id'] ?>">編集</a></td> <td><a href="/blog_delete.php?id=<?php echo $column['id'] ?>">削除</a></td> </tr> <?php endforeach; ?> </body> </html> env.php <?php define('DB_HOST','localhost'); define('DB_NAME','blog_app'); define('DB_USER','blog_user'); define('DB_PASS','**********'); ?> dbc.php <?php require_once('env.php'); class Dbc { protected $table_name; protected function dbConnect() { $host = DB_HOST; $dbname = DB_NAME; $user = DB_USER; $pass = DB_PASS; $dsn = 'mysql:host=$host;dbname=$dbname;blog_app;charset=utf8'; try { $dbh = new \PDO($dsn, $user, $pass, [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗' . $e->getMessage(); exit(); }; return $dbh; } public function getAll() { $dbh = $this->dbConnect(); //①SQLの準備 $sql = "SELECT * FROM $this->table_name"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(\PDO::FETCH_ASSOC); return $result; $dbh = null; } public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function getById($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); $sql = "SELECT * FROM $this->table_name"; $stmt = $dbh->prepare("SELECT * FROM $this->table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(\PDO::FETCH_ASSOC); if (!$result) { exit('本文がありません。'); } return $result; } public function delete($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); $stmt = $dbh->prepare("DELETE FROM $this->table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); $stmt->execute(); echo 'ブログを削除しました!'; return $result; } } ?> <p><a href="/">戻る</a></p> 大変、お手数をおかけします。 どうか教えてください。 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • PHPからMySQLのデータが表示できない

    〇質問の主旨 PHPでMySQLのデータベース(テーブル)から データを表示させようと考えていて、 一度目は表示させることはできました。 しかし同じURLでブラウザをリロードしたところ、 二度目は表示されません。 もう一度データを表示させるためには、 どのあたりをチェックすればよいでしょうか? ご存知の方がいらっしゃいましたら、 ご教示願います。 〇質問の補足 PHPによるコードとMySQLによるクエリ文は次のとおりです。 現在、PHPの「処理1」にある"Success!"は表示させることができますが、 「処理2」は表示させることはできません。 ・コード <?php // データベースの接続 try { $dbh = new PDO('mysql:host=localhost;dbname=mydatabase', 'myname','mypassword'); } catch(PDOException $e) { var_dump($e->getMessage()); exit; } // 処理 1 echo "Success!"; // 処理 2 $sql = "select * from users"; $stmt = $dbh->query($sql); foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $user) { var_dump($user['name']); } echo $dbh->query("select count(*) from users")->fetchColumn() . "records found"; // 切断 $dbh = null; ・クエリ文 create table users ( id int(11) not null auto_increment primary key, name varchar(50), email varchar(255) unique, password char(16) ); insert into users (name,email,password) values ('hoge','hoge@dummy.com','abc'); insert into users (name,email,password) values ('foo','foo@dummy.com','def'); 以上、よろしくお願い申し上げます。

    • ベストアンサー
    • PHP