PHP 기초 다뤄보기 SQL DB 작성

코디·2022년 10월 11일
0
post-thumbnail

PHP가 뭐야?

PHP는 Perl 언어의 영향을 많이 받았는데, 변수 이름 앞에 $를 붙이는 것(예: $var), 펄처럼 배열이 연관 배열로 작동하는 것, 문자열끼리 결합할 때 점(.) 연산자로 결합하는 것이 그 예이다. (예: "Hello, " . "world!" = "Hello, world!"). 다른 프로그래밍 언어에서 하던 대로 덧셈 기호(+)로 문자열을 결합하려 하면 엉뚱한 결과가 나온다. PHP에서는 +는 오직 덧셈만 수행하기 때문이다. 따라서 두 문자열에 +를 사용하면 두 값이 숫자로 변환되어 계산된다. (예: "Hello, " + "world!" = 0)

PHP의 큰 특징 중 하나는 무상태성(Stateless)으로, HTTP 프로토콜과 마찬가지로 상태를 유지하지 않는 성질이다. PHP 웹 서버에 요청을 하면, 해당 스크립트를 실행한 뒤 완전히 종료하고, 그 다음 새 요청이 들어오면 처음부터 다시 시작하는 방식이다. 이 때문에 PHP에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날 때까지만 유지된다. 이러한 특성으로 인해 메모리 관리가 쉽고, 사용자(브라우저 요청)의 잘못된 입력으로 오류가 났을 때 개별적으로 처리하게 되므로 안전하지만, 상태를 유지할 수 없기에 PHP로는 DB 커넥션 풀을 만들 수가 없다.

PHP 파일은 로 이루어진 스크립트 실행 영역이 있다. 는 권장되지 않는다. 이렇게 줄여 쓰는 방식은 기본적으로 비활성화되어 있으므로 쓰려면 php.ini에서 short_open_tags 설정을 on으로 바꾸어야 한다. 줄여 쓰는 방식이 기본적으로 비활성화되어 있는 이유는 XML의 과 같은 문법과 충돌했기 때문이다. PHP가 처음 나왔을 때는 HTML만 있었기 때문에 줄여 쓰는 방식이 문제가 없었지만, HTML에 XML의 문법을 도입한 XHTML 1.0이 나오면서 충돌이 일어났고, 결국 저 옵션이 기본적으로 꺼져 있도록 변경된 것. 다행히 HTML5에서는 XML 문법이 빠졌다. 변수 하나만 출력한다면 형태로 줄여 쓸 수도 있다. 원래 short_open_tags 설정값이 off라면 이것도 같이 꺼졌지만, PHP 5.4부터는 short_open_tags 설정값에 상관없이 항상 형태로 쓸 수 있게 되었다.

PHP sql 접속해보기


<?php 
$con=mysqli_connect("localhost","user","pass","test") or die("Error connecting to database: ".mysqli_error($con));
if ($con)
{
    echo "MySQL 접속 성공";
}
else
{
    echo "MySQL 접속 실패";
}
?>

접속에 성공한다면, 접속 성공이라고 나올것이다. 위에 내용은 mysql 및 marina db도 적용된다.

PHP sql db 생성


$sql = "CREATE DATABASE test";

$ret = mysqli_query($con, $sql);

위 명령어로 test라는 데이터 베이스를 생성하였다.
그럼 테이블을 만들어 보도록 하겠다.

PHP 테이블 생성


     $sql = "
        CREATE TABLE test (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(30) NOT NULL,
            reg_date TIMESTAMP
        )
    ";
    
    $ret = mysqli_query($con, $sql);

위에 내용은 auto increment 로 고유키를 생성하였고, 자동으로 id값에 int(정수형)으로 자동으로 증가된다.

name는 30자 제한으로 text를 입력받을수 있다.
reg_date는 timestamp로 날짜를 입력받을수 있다.

간단하게 form 데이터 전송


<form action="input.php" method="post">
        <input type="text" name="name" placeholder="이름">
        <input type="submit" name="submit" value="Submit">
    </form>


$name = $_POST['name'];
$sql = "INSERT INTO test VALUES (NULL, '$name', NULL)";
$ret = mysqli_query($con, $sql);

name이라는 변수를 post에 들어오는 name값으로 지정하였고, 해당 내용을 test테이블 value 값으로 insert 하였다.

간단하게 php는 무료서버도 많고 저렴한 서버가 많으니, 간단 웹사이트 만들기에는 php도 괜찮을것 같네요.

저는 장고를 위주로 백엔드 작업을 하여 php는
비동기 통신이 잘되는지는 모르겠습니다.

profile
Django DRF, Express, React, React Native, Next,js.......

0개의 댓글