WEB3 - PHP & MySQL

PHP와 MySQL의 연동과 INSERT

수업소개

PHP와 MySQL을 연동하는 방법을 소개합니다. 

 

 

접속

mysqli_connect를 이용해서 mysql server에 접속하는 방법을 알아봅니다. 

 

insert.php

변경사항

<?php
mysqli_connect("localhost", "root", "111111", "opentutorials");
?>

쿼리

mysqli_query를 이용해서 mysql server에 sql문을 전송하는 방법을 알아봅니다. 

 

insert.php

변경사항

<?php
$conn = mysqli_connect("localhost", "root", "111111", "opentutorials");
mysqli_query($conn, "
    INSERT INTO topic (
		title,
		description,
		created
	) VALUES (
		'MySQL',
		'MySQL is ....',
		NOW()
	)");
?>

디버그

mysqli_error를 이용해서 문제가 발생했을 때 원인을 규명하는 방법을 알아봅니다. 

 

insert.php

변경사항

<?php
$conn = mysqli_connect("localhost", "root", "111111", "opentutorials");
$sql  = "
    INSER INTO topic (
		title,
		description,
		created
	) VALUES (
		'MySQL',
		'MySQL is ....',
		NOW()
	)";
$result = mysqli_query($conn, $sql);
if($result === false){
    echo mysqli_error($conn);
}
?>

 

댓글

댓글 본문
작성자
비밀번호
  1. 정병성
    오류도 나오지 않는데도 불구하고 mysql 클라이언트를 이용한 환경이 아니라 비트나미경로에있는 mysql 파일을 통해 접속하였음에도 불구하고 insert.php 파일에 접속을 하면 백색의 아무것도 없는 페이지만 나오는데 mysql 에서 확인해보면 empty set 으로 나옵니다... 도와주세요 .. 어제부터 모든 검색을 다해봤는데도 나오지를 안네요 ..
  2. 정병성
    연동실습에서는 command line client 를 사용하면안되는건가요 ?
    현재 command line client 를 사용하여 실습진행중입니다만. 커맨드라인 입력시에는 데이터 삽입이 잘 되는것을 확인 할 수 있는데 php 함수를 통해 삽입을 하니 전달이 안되는듯합니다.
    $conn변수에는 $conn = mysqli_connect("localhost","root","****","opentutorials");
    위와같이 담았는데 안되네요... 계정이 root 인것은 select current_user(); <<구문을 통해 루트 계정이 현재 사용중인 계정인것을 알았습니다. 하지만 php 에서 동작이 안됩니다.
    이유가 뭘까요 ?
  3. 코드를 제대로 입력하셨고, 내용을 변경하지 않았다면 때때로 초기화 해보는 것도 좋은 방법입니다.
    1) cmd -> mysql monitor login
    /mysql -uroot -p111111
    2) SHOW DATABASES;
    +--------------------+
    | Database |
    +-----------------------+
    | information_schema |
    | mysql |
    | opentutorials |
    | performance_schema|
    | test |
    +----------------------+
    3) 목록중에 있는 opentutorials 제거
    /DROP DATABASE opentutorials;
    4) 강의에서 opentutorials 테이블 생성부분부터 그대로 따라하시면 됩니다.
    대화보기
    • yong
      <?php
      $conn = mysqli_connect("localhost", "root", "111111", "opentutorials");
      $sql = "
      INSERT INTO topic (
      title,
      description,
      created
      ) VALUES (
      'MySQL',
      'MySQL is ....',
      NOW()
      )";
      $result = mysqli_query($conn, $sql);
      if($result === false){
      echo mysqli_error($conn);
      }
      ?>

      코드를 위에 처럼 제대로 입력한거같은데 php를 실행시키면 Table 'opentutorials.topic' doesn't exist
      opentutorials.topic 테이블이 계속 존재하지않는다고 뜨는데 어떻게 해야하나요 ?? ㅜㅜ
    • 하나 빠트렸네요.. insert.php에서 경고 뜨고 접속 안되는 분들은 "localhost" 대신 "127.0.0.1"로 시도해보세요
      mysqli_connect("127.0.0.1", "root", "111111", "opentutorials"); 이렇게요^^

      insert.php에서 다음과 같은 경고 뜨는 분들은 새로 다운 받을때 패스워드 선택 바꾸고, localhost도 위와 같이 바꾸면, 잘되실 거예요~^^

      Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
    • insert.php 에서 경고 메세지 뜨면서 MySQL에 접속이 안되시는 분들은, 아마도 저처럼 MySQL 다운로드시 패스워드 선택할때 위쪽 패스워드를 선택하셨을 겁니다 (그게 자동선택되어 있습니다).

      MySQL 다운 받은 걸 Uninstall 하시고 (맥의 경우, MySQL start 버튼 눌렀던 곳(System Preferences -> MySQL)에 가면 아래쪽에 uninstall 버튼 있습니다. 체크 창이 뜨는데 체크도 하시구요) 새로 다운로드 받으실때 아래쪽 패스워드 선택하세요 (Use Legacy Password Encryption 버튼입니다. 이미 체크 되어 있는 Use Strong Password Encryption 말구요)

      아마도 php mysqli 가 strong password를 아직 지원하지 않아서 생긴 문제인것 같습니다. 이런 자잘한 것들에 넘 스트레스 받지 마시구요, 검색도 해보고 이것저것 시도도 해보고 하면서 꿋꿋히 공부해나가시길 기원합니다^^

      (참고로, 검색해보니, stackoverflow에서 다음 글을 발견하고 위 방법을 시도하게 됐습니다. "Currently, php mysqli extension do not support new caching_sha2 authentication feature. You have to wait until they release an update.")
    • 양항준
      Header 안에 POST 변수를 불러서 글쓰고 나서 글이 써진 해당 페이지로 돌아가는 방법이 있을까요? 매번 index 패이지로 돌아가는 건 불편해 보여서요
    • powhyckf
      싹다 지우고 다시 깔고 하니까 잘되네요 ㅋㅋ
    • Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
      위와 같은 경고메세지가 웹브라우저에서 출력이 되며, 데이터베이스에 접속이 안 됩니다.
      구글링해보니 caching_sha2_password 인증 방식을 php에서 현재 지원을 아직 안 하고 있는 것 같은데
      어떻게 해결방법이 없을까요?ㅠㅠ
      데이터베이스랑 php 연동 자체가 안 되니 수업 진행이 안 되네요 ㅜㅜ
    • 쓸기몬
      insert.php 에서 새로고침을 해도 cmd로 쿼리 전송이 안되요 connect에 문제가 있는 걸까요? mysqli_error로 출력해 봐도 아무것도 안나옵니다.ㅠ
    • cmj88@naver.com
      insert.php를 실행하면 unknown database 'opentutorials' 이런 경고 메시지가 뜹니다. cmd에서 opentutorials db만들고 topic table도 만들었는 왜 안될까요?
    • egoing
      apache/logs/error.log 파일의 제일 아래쪽에 어떻게 적혀있는지 확인하시면 도움이 됩니다.
      대화보기
      • 실습을 두세번 반복해서 진행했으나, 웹 브라우저상에 아무것도 나타나지 않습니다.
        아파치서버는 비트나미로 켜진상태이고, MySQL도 켜져있는 상태이구요..
        index.php는 접속이 되는데, insert.php는 화면상에 아무것도 나타나지 않는군요...
        해당 방법에 대해서 진행하는 방법을 알려주시면 감사하겠습니다..
      버전 관리
      egoing
      현재 버전
      선택 버전
      graphittie 자세히 보기