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문을 전송하는 방법을 알아봅니다. 

영상 내의 SQL 문에 오타가 있습니다. 아래와 같이 VALUE를 VALUES로 변경해주셔야 합니다. 
INSERT INTO topic (title, description, created) VALUES('MySQL', 'MySQL is ..', NOW())

 

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. Sungwoong Pyeon
    문제가 생길시에 주저 없이 bitnami server를 삭제하고 다시 설치하세요. 큰 문제가 되지 않습니다. 공부하면서 만들었던 예제 directory는 따로 저장해놓으시고 다시 설치후 htdocs 안에 복사하시면 문제없이 작동합니다.
  2. phpphph
    백색 화면이 뜨지만 SELCET * FROM topic; 에 정보들은 있는데 문제가 있는건가요?
  3. php_student
    VALUE나 VALUES 나 다 되는 것 같아요
  4. 경민
    해결 했습니다. 데이터베이스에 연결시 아래와 같이 하고
    그 아래에 utf8을 설정해주면 됩니다.

    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
    $mysqli->set_charset("utf8");
    대화보기
    • 경민
      한글이 이상한 알아볼수 없는 문자로 mysql서버에 저장되였는데요.
      혹시 데이터를 mysql서버에 전송시 utf-8로 저장하는 코드가 있을까요?
      mysql서버쪽은 모두 utf-8로 변경했는데도 해결이 안되네요.
    • 궁금해하시는 순서가 뒤바뀌신것 같습니다.
      insert.php에서 백색으로 나오는 이유 ->
      출력이라는 echo코드를 입력하지 않았거나, 출력한 데이터가 없다.
      동영상 강의를 따라서 진행하셨다면 백색으로 나와도 Mysql에 접속된 상태.
      접속만 되었으니 아무것도 안보인다.
      * 코드의 INSERT 구문에서 오류가 없는지 찾아본다.
      VALUES 를 VALUE 라고만 썼다든지 등등.
      echo함수를 쓰지않았으므로 INSERT 구문으로 데이터를 입력했다고 하더라도 화면에는 보여지지 않는다.

      Mysql에서 empty set이라는 이유 -> 테이블에 입력한 값이 없다. 빈공란.
      동영상 강의에서 코트입력부분에서 화면을 멈추고 차근차근 따라하면서 오타가 없는지 확인한다.
      대화보기
      • <?php
        $conn = mysqli_connect("localhost", "root", "111111", "php_db");
        ?>
        위 코드에서 php_db 라는 데이터 베이스를 만드셨나요?
        만들지 않으셨다면 없으니까 들어가지지 않는 것입니다.
        동영상 강의를 처음부터 변경없이 제대로 따라오셨다면 php_db를 지우고,
        그 이름을 opentutorials로 바꿔보시기 바랍니다.
        데이터베이스에 php_db라는 데이터베이스가 없기때문에 작업이 진행되지 않는것 같습니다.
        대화보기
        • 영상에서 INSERT문에 오타 있어요 VALUES가 VALUE로 되어 있네요! 많은 분들이 DB에 입력 안된다고 하는게 이것 때문인거 같습니다.
        • 김희선
          <?php
          $conn = mysqli_connect("localhost", "root", "111111", "php_db");
          ?>

          저는 아예 접속조차가 안되네요ㅠ
          아래와같은 오류메시지가 나옵니다.
          Fatal error: Uncaught Error: Call to undefined function mysqli_connect_error() in C:\Bitnami\wampstack-7.1.19-1\apache2\htdocs\firsthomepage\index.php:2

          구글에서 검색해보니 ini파일에 extension=php_mysqli.dll 이 부분 맨앞에 ;를 지워서 주석을 취소해주라고 되어있어서 그렇게 했는데도 안됩니다ㅠ
          윈도우 환경에서 개발중인데 저와 같은 오류나시는 분 계신가요?
        • 정병성
          오류도 나오지 않는데도 불구하고 mysql 클라이언트를 이용한 환경이 아니라 비트나미경로에있는 mysql 파일을 통해 접속하였음에도 불구하고 insert.php 파일에 접속을 하면 백색의 아무것도 없는 페이지만 나오는데 mysql 에서 확인해보면 empty set 으로 나옵니다... 도와주세요 .. 어제부터 모든 검색을 다해봤는데도 나오지를 안네요 ..
        • 정병성
          연동실습에서는 command line client 를 사용하면안되는건가요 ?
          현재 command line client 를 사용하여 실습진행중입니다만. 커맨드라인 입력시에는 데이터 삽입이 잘 되는것을 확인 할 수 있는데 php 함수를 통해 삽입을 하니 전달이 안되는듯합니다.
          $conn변수에는 $conn = mysqli_connect("localhost","root","****","opentutorials");
          위와같이 담았는데 안되네요... 계정이 root 인것은 select current_user(); <<구문을 통해 루트 계정이 현재 사용중인 계정인것을 알았습니다. 하지만 php 에서 동작이 안됩니다.
          이유가 뭘까요 ?
        • 코드를 제대로 입력하셨고, 내용을 변경하지 않았다면 때때로 초기화 해보는 것도 좋은 방법입니다.
          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 테이블 생성부분부터 그대로 따라하시면 됩니다.
          대화보기
          • <?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 자세히 보기