回答編集履歴

6 追記

tanat

tanat score 17568

2020/10/22 21:39  投稿

前置き
---
`気づけばプロ並みPHP 改訂版`は残念ながら初学者向きとは言えない記述が多いので別の書籍やweb教材に変更されることを強くお勧めします。
[teratail内で書籍名で検索](https://teratail.com/search?q=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP)
[staff_add_check.php](https://teratail.com/search?q=staff_add_check.php)
上記質問の多くの場合で`そもそもデバッグが出来ない残念なコード`が原因になっています。
また、改訂版に関してはサンプルコードのダウンロードも出来ないような・・・
少なくとも誤りのないコードと比較できないような教材はキツいですね。
回答
---
> 編集の追記です。
> エラーは、issetが無ければ、
> Notice: Undefined index: name in C:\xampp\htdocs\staff\staff_add_done.php on line 15
>
> Notice: Undefined index: pass in C:\xampp\htdocs\staff\staff_add_done.php on line 16
は恐らく
```PHP
$staff_name=isset($_POST['name']); 
$staff_pass=isset($_POST['pass']); 
$staff_name=htmlspecialchars($staff_name); 
$staff_pass=htmlspecialchars($staff_pass); 
```
```PHP
$staff_name=htmlspecialchars($_POST['pass']); 
$staff_pass=htmlspecialchars($_POST['name']); 
```
となっているはずで、noticeが出るのはフォームからPOSTせずに直接アクセスしたようなケースだと思います。
> SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
に関しては、
```PHP
$dsn='mysql:dbname=shop;host=127.0.0.1;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password)
```
としてみて駄目なら
- `xampp mariadb パスワード変更`あたりで検索してパスワードを設定して、設定したパスワードを`$password`に代入する
もしくは、xamppをインストールしなおす
あたりかなと思います。
色々試行錯誤しているうちにrootのパスワードを設定しちゃったとかないでしょうか?
ただ、繰り返しになりますが、最新のサンプルコードが取得出来ないような教材を使っても苦労するだけなので、別の教材を探すことをお勧めします。  
 
 
以下、質問修正前の回答
---
ただ、今回のケースだと少なくとも
```PHP
$staff_name=isset($_POST['name'])
$staff_pass=isset($_POST['pass'])
```
```PHP
$staff_name=isset($_POST['name']);
$staff_pass=isset($_POST['pass']);
```
としないと文法エラーでそれより先に進めないですし(**あったらあったで別の問題が出るコードなので前後と合わせて元のコードに戻す必要がありますが**)
```PHP
$dsn='mysql:dbname=shop;
host=localhost;charset=utf8';
$user='root';
$password='';←ここに問題があるというようなエラー回答が出ました。
$dbh=new PDO($dsn,$user,$password)
;
```
```PHP
$dsn='mysql:dbname=shop';
$host='localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password)
;
```
としないとDB情報が誤ったことになります。(実際に動かしているコードと違うのであれば知りませんが)
この辺は人力で何とかするというよりは開発環境でチェックする方が確実で速いので
`PHP IDE`とか`PHP VSCode`あたりで検索してみて、書いている途中にエラーをわかりやすくエラーを表示してくれる開発環境を整えることをお勧めします。
5 追記

tanat

tanat score 17568

2020/10/22 21:38  投稿

前置き
---
`気づけばプロ並みPHP 改訂版`は残念ながら初学者向きとは言えない記述が多いので別の書籍やweb教材に変更されることを強くお勧めします。
[teratail内で書籍名で検索](https://teratail.com/search?q=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP)
[staff_add_check.php](https://teratail.com/search?q=staff_add_check.php)
上記質問の多くの場合で`そもそもデバッグが出来ない残念なコード`が原因になっています。
また、改訂版に関してはサンプルコードのダウンロードも出来ないような・・・
少なくとも誤りのないコードと比較できないような教材はキツいですね。
回答
---
> 編集の追記です。
> エラーは、issetが無ければ、
> Notice: Undefined index: name in C:\xampp\htdocs\staff\staff_add_done.php on line 15
>
> Notice: Undefined index: pass in C:\xampp\htdocs\staff\staff_add_done.php on line 16
は恐らく
```PHP
$staff_name=isset($_POST['name']); 
$staff_pass=isset($_POST['pass']); 
$staff_name=htmlspecialchars($staff_name); 
$staff_pass=htmlspecialchars($staff_pass); 
```
```PHP
$staff_name=htmlspecialchars($_POST['pass']); 
$staff_pass=htmlspecialchars($_POST['name']); 
```
となっているはずで、noticeが出るのはフォームからPOSTせずに直接アクセスしたようなケースだと思います。
> SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)  
に関しては、  
```PHP  
$dsn='mysql:dbname=shop;host=127.0.0.1;charset=utf8';  
$user='root';  
$password='';  
$dbh=new PDO($dsn,$user,$password)  
```  
としてみて駄目なら  
- `xampp mariadb パスワード変更`あたりで検索してパスワードを設定して、設定したパスワードを`$password`に代入する  
 
もしくは、xamppをインストールしなおす  
 
あたりかなと思います。  
色々試行錯誤しているうちにrootのパスワードを設定しちゃったとかないでしょうか?  
以下、質問修正前の回答
---
ただ、今回のケースだと少なくとも
```PHP
$staff_name=isset($_POST['name'])
$staff_pass=isset($_POST['pass'])
```
```PHP
$staff_name=isset($_POST['name']);
$staff_pass=isset($_POST['pass']);
```
としないと文法エラーでそれより先に進めないですし(**あったらあったで別の問題が出るコードなので前後と合わせて元のコードに戻す必要がありますが**)
```PHP
$dsn='mysql:dbname=shop;
host=localhost;charset=utf8';
$user='root';
$password='';←ここに問題があるというようなエラー回答が出ました。
$dbh=new PDO($dsn,$user,$password)
;
```
```PHP
$dsn='mysql:dbname=shop';
$host='localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password)
;
```
としないとDB情報が誤ったことになります。(実際に動かしているコードと違うのであれば知りませんが)
この辺は人力で何とかするというよりは開発環境でチェックする方が確実で速いので
`PHP IDE`とか`PHP VSCode`あたりで検索してみて、書いている途中にエラーをわかりやすくエラーを表示してくれる開発環境を整えることをお勧めします。
4 補足

tanat

tanat score 17568

2020/10/22 21:27  投稿

前置き
---
`気づけばプロ並みPHP 改訂版`は残念ながら初学者向きとは言えない記述が多いので別の書籍やweb教材に変更されることを強くお勧めします。
[teratail内で書籍名で検索](https://teratail.com/search?q=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP)
[staff_add_check.php](https://teratail.com/search?q=staff_add_check.php)
上記質問の多くの場合で`そもそもデバッグが出来ない残念なコード`が原因になっています。
また、改訂版に関してはサンプルコードのダウンロードも出来ないような・・・
少なくとも誤りのないコードと比較できないような教材はキツいですね。
 
回答  
---  
> 編集の追記です。  
> エラーは、issetが無ければ、  
> Notice: Undefined index: name in C:\xampp\htdocs\staff\staff_add_done.php on line 15  
>  
> Notice: Undefined index: pass in C:\xampp\htdocs\staff\staff_add_done.php on line 16  
 
は恐らく  
```PHP  
$staff_name=isset($_POST['name']);   
$staff_pass=isset($_POST['pass']);   
 
$staff_name=htmlspecialchars($staff_name);   
$staff_pass=htmlspecialchars($staff_pass);   
```  
 
 
 
```PHP  
$staff_name=htmlspecialchars($_POST['pass']);   
$staff_pass=htmlspecialchars($_POST['name']);   
```  
となっているはずで、noticeが出るのはフォームからPOSTせずに直接アクセスしたようなケースだと思います。  
 
以下、質問修正前の回答
---
ただ、今回のケースだと少なくとも
```PHP
$staff_name=isset($_POST['name'])
$staff_pass=isset($_POST['pass'])
```
```PHP
$staff_name=isset($_POST['name']);
$staff_pass=isset($_POST['pass']);
```
としないと文法エラーでそれより先に進めないですし(**あったらあったで別の問題が出るコードなので前後と合わせて元のコードに戻す必要がありますが**)
```PHP
$dsn='mysql:dbname=shop;
host=localhost;charset=utf8';
$user='root';
$password='';←ここに問題があるというようなエラー回答が出ました。
$dbh=new PDO($dsn,$user,$password)
;
```
```PHP
$dsn='mysql:dbname=shop';
$host='localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password)
;
```
としないとDB情報が誤ったことになります。(実際に動かしているコードと違うのであれば知りませんが)
この辺は人力で何とかするというよりは開発環境でチェックする方が確実で速いので
`PHP IDE`とか`PHP VSCode`あたりで検索してみて、書いている途中にエラーをわかりやすくエラーを表示してくれる開発環境を整えることをお勧めします。
3 修正

tanat

tanat score 17568

2020/10/22 21:15  投稿

前置き
---
`気づけばプロ並みPHP 改訂版`は残念ながら初学者向きとは言えない記述が多いので別の書籍やweb教材に変更されることを強くお勧めします。
[teratail内で書籍名で検索](https://teratail.com/search?q=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP)
[staff_add_check.php](https://teratail.com/search?q=staff_add_check.php)
上記質問の多くの場合で`そもそもデバッグが出来ない残念なコード`が原因になっています。
また、改訂版に関してはサンプルコードのダウンロードも出来ないような・・・
少なくとも誤りのないコードと比較できないような教材はキツいですね。
回答
以下、質問修正前の回答
---
ただ、今回のケースだと少なくとも
```PHP
$staff_name=isset($_POST['name'])
$staff_pass=isset($_POST['pass'])
```
```PHP
$staff_name=isset($_POST['name']);
$staff_pass=isset($_POST['pass']);
```
としないと文法エラーでそれより先に進めないですし(**あったらあったで別の問題が出るコードなので前後と合わせて元のコードに戻す必要がありますが**)
```PHP
$dsn='mysql:dbname=shop;
host=localhost;charset=utf8';
$user='root';
$password='';←ここに問題があるというようなエラー回答が出ました。
$dbh=new PDO($dsn,$user,$password)
;
```
```PHP
$dsn='mysql:dbname=shop';
$host='localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password)
;
```
としないとDB情報が誤ったことになります。(実際に動かしているコードと違うのであれば知りませんが)
この辺は人力で何とかするというよりは開発環境でチェックする方が確実で速いので
`PHP IDE`とか`PHP VSCode`あたりで検索してみて、書いている途中にエラーをわかりやすくエラーを表示してくれる開発環境を整えることをお勧めします。
2 追記

tanat

tanat score 17568

2020/10/22 19:50  投稿

前置き
---
`気づけばプロ並みPHP 改訂版`は残念ながら初学者向きとは言えない記述が多いので別の書籍やweb教材に変更されることを強くお勧めします。
[teratail内で書籍名で検索](https://teratail.com/search?q=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP)
[staff_add_check.php](https://teratail.com/search?q=staff_add_check.php)
上記質問の多くの場合で`そもそもデバッグが出来ない残念なコード`が原因になっています。
また、改訂版に関してはサンプルコードのダウンロードも出来ないような・・・
少なくとも誤りのないコードと比較できないような教材はキツいですね。
回答
---
ただ、今回のケースだと少なくとも
```PHP
$staff_name=isset($_POST['name'])
$staff_pass=isset($_POST['pass'])
```
```PHP
$staff_name=isset($_POST['name']);
$staff_pass=isset($_POST['pass']);
```
としないと文法エラーでそれより先に進めないですし
としないと文法エラーでそれより先に進めないですし(**あったらあったで別の問題が出るコードなので前後と合わせて元のコードに戻す必要がありますが**)
```PHP
$dsn='mysql:dbname=shop;
host=localhost;charset=utf8';
$user='root';
$password='';←ここに問題があるというようなエラー回答が出ました。
$dbh=new PDO($dsn,$user,$password)
;
```
```PHP
$dsn='mysql:dbname=shop';
$host='localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password)
;
```
としないとDB情報が誤ったことになります。(実際に動かしているコードと違うのであれば知りませんが)
この辺は人力で何とかするというよりは開発環境でチェックする方が確実で速いので
`PHP IDE`とか`PHP VSCode`あたりで検索してみて、書いている途中にエラーをわかりやすくエラーを表示してくれる開発環境を整えることをお勧めします。
1 修正

tanat

tanat score 17568

2020/10/22 19:30  投稿

前置き
---
`気づけばプロ並みPHP 改訂版`は残念ながら初学者向きとは言えない記述が多いので別の書籍やweb教材に変更されることを強くお勧めします。
[teratail内で書籍名で検索](https://teratail.com/search?q=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP)
[staff_add_check.php](https://teratail.com/search?q=staff_add_check.php)
上記質問の多くの場合で`そもそもデバッグが出来ない残念なコード`が原因になっています。
また、改訂版に関してはサンプルコードのダウンロードも出来ないような・・・
少なくとも誤りのないコードと比較できないような教材はキツいですね。
回答
---
ただ、今回のケースだと少なくとも
```PHP
$staff_name=isset($_POST['name'])
$staff_pass=isset($_POST['pass'])
```
```PHP
$staff_name=isset($_POST['name']);
$staff_pass=isset($_POST['pass']);
```
としないと文法エラーでそれより先に進めないですし
```PHP
$dsn='mysql:dbname=shop;
host=localhost;charset=utf8';
$user='root';
$password='';←ここに問題があるというようなエラー回答が出ました。
$dbh=new PDO($dsn,$user,$password)
;
```
```PHP
$dsn='mysql:dbname=shop;
$dsn='mysql:dbname=shop';
$host='localhost;charset=utf8';
$user='root';
$password='';←ここに問題があるというようなエラー回答が出ました。
$password='';
$dbh=new PDO($dsn,$user,$password)
;
```
としないと文法エラーでそれより先に進めないはずです。
(実際に動かしているコードと質問のコードが違うのであれば知りません)
としないとDB情報が誤ったことになります。(実際に動かしているコードと違うのであれば知りませんが)
この辺は人力で何とかするというよりは開発環境でチェックする方が確実で速いので
`PHP IDE`とか`PHP VSCode`あたりで検索してみて、開発環境を整えることをお勧めします。
`PHP IDE`とか`PHP VSCode`あたりで検索してみて、書いている途中にエラーをわかりやすくエラーを表示してくれる開発環境を整えることをお勧めします。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る