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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

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

PHP

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

Q&A

2回答

1949閲覧

エラーの原因が分からない

退会済みユーザー

退会済みユーザー

総合スコア0

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

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

PHP

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

0グッド

0クリップ

投稿2020/03/30 08:57

前提・実現したいこと

・エラーの原因を知る
・修正方法
・どこが悪かったのかを知る

発生している問題・エラーメッセージ

SQLでloginmanagement=>userData=>pointのデータを表示をしたかったのですが、エラーが発生していて動作しません。
1.ログインしたら Main.phpに移動(Main.phpのソースコードは本文掲載)
2.ようこそ ○○ 様と表示
3.所持ポイントを調べて表示する
という流れを作っています。
SELECTを使い、nameの情報から自分のpoint情報を呼び出したいです。

--id--|---name--|-point--|
1 |ひろし |1000 |
------|---------|---------|

Parse error: syntax error, unexpected '$sql' (T_VARIABLE) in C:\xampp\htdocs\clane\online\mypage\Main.php on line 144

該当のソースコード

PHP

1<!doctype html> 2<html> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> 7 <style> 8html, 9body { 10 height: 100%; 11} 12 13body { 14 display: -ms-flexbox; 15 display: flex; 16 -ms-flex-align: center; 17 align-items: center; 18 padding-top: 40px; 19 padding-bottom: 40px; 20 background-color: #f5f5f5; 21} 22 23.form-signin { 24 width: 100%; 25 max-width: 420px; 26 padding: 15px; 27 margin: auto; 28} 29 30.form-label-group { 31 position: relative; 32 margin-bottom: 1rem; 33} 34 35.form-label-group > input, 36.form-label-group > label { 37 height: 3.125rem; 38 padding: .75rem 39} 40 41.form-label-group > label { 42 position: absolute; 43 top: 0; 44 left: 0; 45 display: block; 46 width: 100%; 47 margin-bottom: 0; /* デフォルトの `<label>` margin を上書き */ 48 line-height: 1.5; 49 color: #495057; 50 pointer-events: none; 51 cursor: text; /* ラベルの下の入力と一致させる */ 52 border: 1px solid transparent; 53 border-radius: .25rem; 54 transition: all .1s ease-in-out; 55} 56 57.form-label-group input::-webkit-input-placeholder { 58 color: transparent; 59} 60 61.form-label-group input:-ms-input-placeholder { 62 color: transparent; 63} 64 65.form-label-group input::-ms-input-placeholder { 66 color: transparent; 67} 68 69.form-label-group input::-moz-placeholder { 70 color: transparent; 71} 72 73.form-label-group input::placeholder { 74 color: transparent; 75} 76 77.form-label-group input:not(:placeholder-shown) { 78 padding-top: 1.25rem; 79 padding-bottom: 1.25rem; 80} 81 82.form-label-group input:not(:placeholder-shown) ~ label { 83 padding-top: .25rem; 84 padding-bottom: .25rem; 85 font-size: 12px; 86 color: #777; 87} 88 89/* Edge用フォールバック 90-------------------------------------------------- */ 91@supports (-ms-ime-align: auto) { 92 .form-label-group > label { 93 display: none; 94 } 95 .form-label-group input::-ms-input-placeholder { 96 color: #777; 97 } 98} 99 100/* IE10-11用フォールバック 101-------------------------------------------------- */ 102@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { 103 .form-label-group > label { 104 display: none; 105 } 106 .form-label-group input:-ms-input-placeholder { 107 color: #777; 108 } 109} 110</style> 111<?php 112session_start(); 113 114// ログイン状態チェック 115if (!isset($_SESSION["NAME"])) { 116 header("Location: Logout.php"); 117 exit; 118} 119?> 120 121<!doctype html> 122<html> 123 <head> 124 <meta charset="UTF-8"> 125 <title>CLANE STAR ONLINE|<?php echo htmlspecialchars($_SESSION["NAME"], ENT_QUOTES); ?> 様のマイページ</title> 126 </head> 127 <body> 128 <div class="mx-auto"> 129 <h1><?php echo htmlspecialchars($_SESSION["NAME"], ENT_QUOTES); ?> 様のマイページ</h1> 130 <!-- ユーザーIDにHTMLタグが含まれても良いようにエスケープする --> 131 <p>ようこそ<u><?php echo htmlspecialchars($_SESSION["NAME"], ENT_QUOTES); ?></u>さん</p> <!-- ユーザー名をechoで表示 --> 132 <p class="mx-auto"><?php echo htmlspecialchars($_SESSION["NAME"], ENT_QUOTES); ?> 様の情報</p> 133<?php 134session_start(); 135 136$db['host'] = "localhost"; // DBサーバのURL 137$db['user'] = "hogeUser"; // ユーザー名 138$db['pass'] = "hogehoge"; // ユーザー名のパスワード 139$db['dbname'] = "loginManagement"; // データベース名 140 141$name = $_SESSION["NAME"] 142 143$sql = "SELECT point FROM userData WHERE name = $name"; //144行目 144 145$stmt = $dbh->query($sql); 146 147foreach ($stmt as $row) { 148 149echo '所持CP'.':'.$row['point'].'CP'; 150 151} 152 153?> 154 <ul> 155 <li><a href="Logout.php">ログアウト</a></li> 156 </ul> 157 </div> 158 </body> 159</html>

試したこと

""をつける等

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/03/30 09:17

些細な文法ミスで teratail に質問投稿する時間が惜しいと思うようであれば、Eclipseだのnetbeansだの、エディタ上で常に文法チェックしてくれる開発環境を整備することを強くおすすめします。
guest

回答2

0

$_SESSION["NAME"]のうしろに、セミコロン「;」がない

投稿2020/03/30 09:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

php

1$name = $_SESSION["NAME"] //←文の終端がない 2 3$sql = "SELECT point FROM userData WHERE name = $name"; //144行目

PHPに限らずエラーで指定された行数「前後」を確認することです。
PHP側はコードがどんな意図で書かれたか知りませんから、構文にそった結果が出ているだけです。

2つ蛇足でアドバイス。

1点目。
改行やコメントは開発者側が読みやすさを重視してつけるだけなので、
コードが実行される際は全てないものとして解析されます。
つまりPHP側からするとこうなってるわけですね。

php

1$name=$_SESSION["NAME"]$sql="SELECT point FROM userData WHERE name = $name";

$で始まる文字列は変数というのがPHPのルールなので今回のようなエラーが出てます。

2点目。
開発に使ってるエディタを見直しましょう。
構文チェック機能がついているものはほぼ必須です。
今回のようなものであれば実行しなくとも教えてくれます。
私はIDEをすすめます。(Eclipseなどが有名)

投稿2020/03/30 09:03

編集2020/03/30 09:32
m.ts10806

総合スコア80850

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

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

m.ts10806

2020/03/30 09:16

SQLのエスケープされてないのも気にはなるけど…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問