MySQL의 INSERT가 잘못되었을 때 한 일 + 그 외 여러가지.
7915 단어 MySQLphpMyadminPHP7centos7
개요
관리 유저 신규 등록 기능의 구현을 하는 단계에서, 클라이언트로부터의 입력 정보가 MySQL에 등록되지 않는다(INSERT가 잘 되지 않는) 문제가 발생.
해결을 위해 1시간 정도 조사를 시도했다. 부주의하거나 맹점이라든지 도구에 너무 의존하지 말라고 가르쳤다고 할까 뭐 그런 느낌이지만, 어쨌든 같은 실수를 하지 않는 것이 중요()
전제
이번에는 PHP7계에서 PDO를 이용한 DB 접속을 채용. 연결 자체는 성공적이었고 그에 대한 문제는 발견되지 않았다. 참고까지 이하 테이블의 내용이나 소스나.
【컬럼 정보】
・id:약속의 녀석.
· username : "name"이 예약어라는 것을 몰랐기 때문에 username에게.
・password1: 패스워드 입력용.
・password2:패스워드(확인) 입력용.
SignUp.php<?php
//ユーザー新規登録
if(isset($_POST['signin'])){
$username = $_POST['username'];
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];
try{
$db = new PDO('mysql:host=localhost;dbname=ACCOUNT','root','root');
$sql = 'INSERT INTO USERS(username, password1, password2) VALUES(?, ?, ?)';
$stmt = $db->prepare($sql);
$stmt->execute(array($username, $password1, $password2));
$stmt = null;
$db = null;
}catch(PDOException $e){
echo $e->getMessage();
exit;
}
}
?>
※password1과 password2는 나중에 추가 구현할 예정이므로 이번에는 할애.
우선 쿼리 로그 보기
DB는 그다지 적극적으로 에러 토해주지 않기 때문에, 우선 로그를 확인해 기분을 느낀다.
mysql> show full processlist\G;
*************************** 1. row ***************************
Id: 147
User: root
Host: localhost
db: ACCOUNT
Command: Query
Time: 0
State: starting
Info: show full processlist
1 row in set (0.00 sec)
ERROR:
No query specified
흠. 확실히 안돼, 라고.
이번에는 phpMyAdmin을 조금만 들여다 보는 것에.
역시. . .
테이블 편집으로 하나하나 확인해 보았는데 안의 정입니다.
id에 auto_increment가 지정되지 않은 ,,,
정말로 괴롭힘.
기타 : 문자 코드도 드디어 편집
그 후, 입력 화면으로부터 데이터의 등록까지 잘 되었습니다만, 문자 코드도 통일되어 있지 않은 것 같아서.
이 때의 제대로 정비해 두었습니다. 나중에 작업할 때, 터무니 없이 귀찮게 되거나 하는 이야기도 들었으므로 정중하게 정중하게.
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
이 녀석,
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
이렇게 합니다. latin1이 된 문자 코드를 utf8로 변경했습니다.
여기 근처의 설정이 끝나면 테이블을 재구축해 갑니다. 정말 귀찮았기 때문에 앞으로는 이 근처의 설정도 먼저 확인해 두어야 한다고 생각했습니다.
사용자 이름: 테스트
경로 1: user1
패스2(확인용):user1
에 등록해 보면,
mysql> select*from USERS;
+----+-----------+-----------+-----------+
| id | username | password1 | password2 |
+----+-----------+-----------+-----------+
| 1 | テスト | user1 | user1 |
+----+-----------+-----------+-----------+
1 row in set (0.00 sec)
했어.
참조한 선인들의 지혜는 아래 URL에서 참조를 잘 부탁드립니다. 모두 알기 쉬웠다… 눈물
선인들의 지혜
· php에서 mysql 테이블로 INSERT 할 수 없다
htps : // 놀라운 l. 코 m / 쿠에 s 치온 s / 12280
· 문자 코드 확인 및 변경
htps : //p 로엔기네 r. 이런 r의 s. 이. jp / 콘텐 t / 코 m 펑 아츠레 / 6653
· MySQL의 기동에 관한 것
htps : // 이 m/없음 r_fkm/이고 ms/7013655다 212b0 에후아 6f
· 콘솔에서 문자 코드 설정 변경
htps : // m / 우세 r0 / ms / a 9116 c7bd7b70 cfb0
요약
・테이블을 만들 때는 가능한 한 새지 않고 정중하게 설계.
・문자화 → 문자코드 설정을 바꾼다. 때로는 콘솔 측의 설정도 수정해 본다.
기본적인 기능의 실장하고 있는 동시에 주변 지식도 점점 따라오지 말라고 생각했다(소병감).
Reference
이 문제에 관하여(MySQL의 INSERT가 잘못되었을 때 한 일 + 그 외 여러가지.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mst_141/items/417d1a2bd503a05aac15
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 PHP7계에서 PDO를 이용한 DB 접속을 채용. 연결 자체는 성공적이었고 그에 대한 문제는 발견되지 않았다. 참고까지 이하 테이블의 내용이나 소스나.
【컬럼 정보】
・id:약속의 녀석.
· username : "name"이 예약어라는 것을 몰랐기 때문에 username에게.
・password1: 패스워드 입력용.
・password2:패스워드(확인) 입력용.
SignUp.php
<?php
//ユーザー新規登録
if(isset($_POST['signin'])){
$username = $_POST['username'];
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];
try{
$db = new PDO('mysql:host=localhost;dbname=ACCOUNT','root','root');
$sql = 'INSERT INTO USERS(username, password1, password2) VALUES(?, ?, ?)';
$stmt = $db->prepare($sql);
$stmt->execute(array($username, $password1, $password2));
$stmt = null;
$db = null;
}catch(PDOException $e){
echo $e->getMessage();
exit;
}
}
?>
※password1과 password2는 나중에 추가 구현할 예정이므로 이번에는 할애.
우선 쿼리 로그 보기
DB는 그다지 적극적으로 에러 토해주지 않기 때문에, 우선 로그를 확인해 기분을 느낀다.
mysql> show full processlist\G;
*************************** 1. row ***************************
Id: 147
User: root
Host: localhost
db: ACCOUNT
Command: Query
Time: 0
State: starting
Info: show full processlist
1 row in set (0.00 sec)
ERROR:
No query specified
흠. 확실히 안돼, 라고.
이번에는 phpMyAdmin을 조금만 들여다 보는 것에.
역시. . .
테이블 편집으로 하나하나 확인해 보았는데 안의 정입니다.
id에 auto_increment가 지정되지 않은 ,,,
정말로 괴롭힘.
기타 : 문자 코드도 드디어 편집
그 후, 입력 화면으로부터 데이터의 등록까지 잘 되었습니다만, 문자 코드도 통일되어 있지 않은 것 같아서.
이 때의 제대로 정비해 두었습니다. 나중에 작업할 때, 터무니 없이 귀찮게 되거나 하는 이야기도 들었으므로 정중하게 정중하게.
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
이 녀석,
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
이렇게 합니다. latin1이 된 문자 코드를 utf8로 변경했습니다.
여기 근처의 설정이 끝나면 테이블을 재구축해 갑니다. 정말 귀찮았기 때문에 앞으로는 이 근처의 설정도 먼저 확인해 두어야 한다고 생각했습니다.
사용자 이름: 테스트
경로 1: user1
패스2(확인용):user1
에 등록해 보면,
mysql> select*from USERS;
+----+-----------+-----------+-----------+
| id | username | password1 | password2 |
+----+-----------+-----------+-----------+
| 1 | テスト | user1 | user1 |
+----+-----------+-----------+-----------+
1 row in set (0.00 sec)
했어.
참조한 선인들의 지혜는 아래 URL에서 참조를 잘 부탁드립니다. 모두 알기 쉬웠다… 눈물
선인들의 지혜
· php에서 mysql 테이블로 INSERT 할 수 없다
htps : // 놀라운 l. 코 m / 쿠에 s 치온 s / 12280
· 문자 코드 확인 및 변경
htps : //p 로엔기네 r. 이런 r의 s. 이. jp / 콘텐 t / 코 m 펑 아츠레 / 6653
· MySQL의 기동에 관한 것
htps : // 이 m/없음 r_fkm/이고 ms/7013655다 212b0 에후아 6f
· 콘솔에서 문자 코드 설정 변경
htps : // m / 우세 r0 / ms / a 9116 c7bd7b70 cfb0
요약
・테이블을 만들 때는 가능한 한 새지 않고 정중하게 설계.
・문자화 → 문자코드 설정을 바꾼다. 때로는 콘솔 측의 설정도 수정해 본다.
기본적인 기능의 실장하고 있는 동시에 주변 지식도 점점 따라오지 말라고 생각했다(소병감).
Reference
이 문제에 관하여(MySQL의 INSERT가 잘못되었을 때 한 일 + 그 외 여러가지.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mst_141/items/417d1a2bd503a05aac15
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
mysql> show full processlist\G;
*************************** 1. row ***************************
Id: 147
User: root
Host: localhost
db: ACCOUNT
Command: Query
Time: 0
State: starting
Info: show full processlist
1 row in set (0.00 sec)
ERROR:
No query specified
테이블 편집으로 하나하나 확인해 보았는데 안의 정입니다.
id에 auto_increment가 지정되지 않은 ,,,
정말로 괴롭힘.
기타 : 문자 코드도 드디어 편집
그 후, 입력 화면으로부터 데이터의 등록까지 잘 되었습니다만, 문자 코드도 통일되어 있지 않은 것 같아서.
이 때의 제대로 정비해 두었습니다. 나중에 작업할 때, 터무니 없이 귀찮게 되거나 하는 이야기도 들었으므로 정중하게 정중하게.
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
이 녀석,
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
이렇게 합니다. latin1이 된 문자 코드를 utf8로 변경했습니다.
여기 근처의 설정이 끝나면 테이블을 재구축해 갑니다. 정말 귀찮았기 때문에 앞으로는 이 근처의 설정도 먼저 확인해 두어야 한다고 생각했습니다.
사용자 이름: 테스트
경로 1: user1
패스2(확인용):user1
에 등록해 보면,
mysql> select*from USERS;
+----+-----------+-----------+-----------+
| id | username | password1 | password2 |
+----+-----------+-----------+-----------+
| 1 | テスト | user1 | user1 |
+----+-----------+-----------+-----------+
1 row in set (0.00 sec)
했어.
참조한 선인들의 지혜는 아래 URL에서 참조를 잘 부탁드립니다. 모두 알기 쉬웠다… 눈물
선인들의 지혜
· php에서 mysql 테이블로 INSERT 할 수 없다
htps : // 놀라운 l. 코 m / 쿠에 s 치온 s / 12280
· 문자 코드 확인 및 변경
htps : //p 로엔기네 r. 이런 r의 s. 이. jp / 콘텐 t / 코 m 펑 아츠레 / 6653
· MySQL의 기동에 관한 것
htps : // 이 m/없음 r_fkm/이고 ms/7013655다 212b0 에후아 6f
· 콘솔에서 문자 코드 설정 변경
htps : // m / 우세 r0 / ms / a 9116 c7bd7b70 cfb0
요약
・테이블을 만들 때는 가능한 한 새지 않고 정중하게 설계.
・문자화 → 문자코드 설정을 바꾼다. 때로는 콘솔 측의 설정도 수정해 본다.
기본적인 기능의 실장하고 있는 동시에 주변 지식도 점점 따라오지 말라고 생각했다(소병감).
Reference
이 문제에 관하여(MySQL의 INSERT가 잘못되었을 때 한 일 + 그 외 여러가지.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mst_141/items/417d1a2bd503a05aac15
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
mysql> select*from USERS;
+----+-----------+-----------+-----------+
| id | username | password1 | password2 |
+----+-----------+-----------+-----------+
| 1 | テスト | user1 | user1 |
+----+-----------+-----------+-----------+
1 row in set (0.00 sec)
· php에서 mysql 테이블로 INSERT 할 수 없다
htps : // 놀라운 l. 코 m / 쿠에 s 치온 s / 12280
· 문자 코드 확인 및 변경
htps : //p 로엔기네 r. 이런 r의 s. 이. jp / 콘텐 t / 코 m 펑 아츠레 / 6653
· MySQL의 기동에 관한 것
htps : // 이 m/없음 r_fkm/이고 ms/7013655다 212b0 에후아 6f
· 콘솔에서 문자 코드 설정 변경
htps : // m / 우세 r0 / ms / a 9116 c7bd7b70 cfb0
요약
・테이블을 만들 때는 가능한 한 새지 않고 정중하게 설계.
・문자화 → 문자코드 설정을 바꾼다. 때로는 콘솔 측의 설정도 수정해 본다.
기본적인 기능의 실장하고 있는 동시에 주변 지식도 점점 따라오지 말라고 생각했다(소병감).
Reference
이 문제에 관하여(MySQL의 INSERT가 잘못되었을 때 한 일 + 그 외 여러가지.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mst_141/items/417d1a2bd503a05aac15
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(MySQL의 INSERT가 잘못되었을 때 한 일 + 그 외 여러가지.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mst_141/items/417d1a2bd503a05aac15텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)