데이터베이스/SQL

PHP 기본 문법

haventmetyou 2023. 12. 28. 17:02

PHP 코드의 확정명은 *.php로 사용

 

  • php 기본 틀
<?php

?>

 

  • php 주석
<?php
  // 한 줄 주석용
  /*
    여러 줄
    주석용
  */
?>

 

  • 변수와 출력
<?php
  $a = 100;
  print $a;
  
  $b = "안녕하세요? MariaDB";
  echo $b;
?>

// 실행 결과
100안녕하세요?MariaDB

 

PHP의 변수 이름은 몇 가지 규칙을 따라야 함

  • 제일 앞에 $가 붙어야 함
  • 문자와 숫자, 언더바(_)를 사용할 수 있지만 숫자로 시작할 수 없음

          ex) $abc (O), $abc123 (O), $_abc123 (O), $123 (X), $123abc (X)

  • 대소문자를 구별함 ex) $abc와 $ABC는 다른 변수

 

  • 데이터 형식

PHP 데이터 형식은 정수(int), 실수(double), 문자열(string), 불형(boolean), 객체(object), 배열(array) 등이 있음

<?php
 $a = 123;              echo gettype($a), "<br>";
 $a = 123.123;          echo gettype($a), "<br>";
 $a = "MariaDB";        echo gettype($a), "<br>";
 $a = true;             echo gettype($a), "<br>";
 $a = array( 1, 2, 3);    echo gettype($a), "<br>";
?>

위 코드 실행 결과

  • 문자열

문자열은 큰 따옴표 혹은 작은 따옴표를 사용해도 되지만 큰 따옴표로 묶고, 그 내부에 필요할 경우 작은 따옴표로 묶어주는 방식이 적절함

<?php
   $str1 = "이것이 MariaDB다<br>";    echo $str1;
   $str2 = 'PHP 프로그래밍<br>';    echo $str2;
   $str3 = "SELECT * FROM userTBL WHERE userID='JYP' ";    echo $str3;
?>

  • 조건문과 반복문
  • if() 함수

조건식의 결과는 TRUE 또는 FALSE가 오는데 주로 비교 연산자인 ==, <>, <, >, <=, >= 등이 사용됨

<?php
  $a=100;
  $b=200;
  
  if($a > $b) {
     echo "a가 b보다 큽니다.";
  } else {
     echo "a가 b보다 작습니다.";
  }
?>

// 실행 결과
a가 b보다 작습니다.

 

여러 개의 조건이 필요하다면 if ~ elseif를 사용할 수 있음

<?php
   $jumsu=83;
   
   if($jumsu >= 90) {
      echo "A학점";
   } elseif($jumsu >= 80) {
      echo "B학점";
   } elseif($jumsu >= 70) {
      echo "C학점";
   } elseif($jumsu >= 60) {
      echo "D학점";
   } else {
      echo "F학점";
   }
?>

// 실행 결과
B학점

 

  • switch() 함수

if~elseif와 비슷하게 switch~case로 여러 개의 조건 처리 가능, default 부분은 생략 가능

형식 :
switch(변수) {
  case 값1 :
    // 값1이면 이 부분을 처리
    break;
  case 값2 :
    // 값2면 이 부분을 처리
    break;
  ...
  default:
    // 아무것도 해당 안 되면 이 부분 처리
}
<?php
   $jumsu=83;
   
   switch(intval($jumsu / 10)) {
      case 10:  //100점인 경우도 A학점 처리
      case 9:
        echo "A학점"; break;
      case 8:
        echo "B학점"; break;
      case 7:
        echo "C학점"; break;
      case 6:
        echo "D학점"; break;
      default:
        echo "F학점";
    }
?>
  • for() 함수
형식 :
for(초깃값 ; 조건식 ; 증감식) {
   // 반복할 부분
}
<?php
   for( $i=1; $i<=10 ; $i=$i+1 ) {
      echo $i, " ";
   }
?>

// 실행 결과
1 2 3 4 5 6 7 8 9 10

<?php
   $hap=0;
   
   for( $i=123; $i<=456 ; $i=$i+2 ) {
     $hap = $hap + $i;
   }
   
   echo "123부터 456까지 홀수의 합계 : ", $hap;
?>

// 실행 결과
123부터 456까지 홀수의 합계 : 48263

 

  • while() 함수
형식 : 
while(조건식) {
   // 반복할 부분
}

/* while문의 필수는 아니지만 초깃값과 증감식의 위치 파악 */
형식 :
초깃값;
while(조건식) {
   // 반복할 부분
   증감식;
}
<?php
   $hap=0;
   
   $i = 123;
   while( $i<=456 ) {
     $hap = $hap + $i;
      $i=$i+2;
   }
   
   echo "123부터 456까지 홀수의 합계 : ", $hap;
?>

// 실행 결과
123부터 456까지 홀수의 합계 : 48263

 

  • 배열
형식1 :
$배열명 = array(값1, 값2, 값3 ...);

형식2 :
$배열명 = range(시작값, 끝값, 증가값);  // 증가값 생략 가능

형식3 :
$배열명[0] = 값1;  // 배열명 정의되어 있지 않아도 배열 생성됨
$배열명[1] = 값2;
$배열명[2] = 값3;
...
<?php
   $myArray = array(100, 'MariaDB', 123.123);
   echo $myArray[0], " ", $myArray[1], " ", $myArray[2], "<br>";

   $myArray = range(1,3);
   echo $myArray[0], " ", $myArray[1], " ", $myArray[2], "<br>";

   $myArray = range(1,10,2);
   echo $myArray[0], " ", $myArray[4], "<br>";

   $newArray[0] = 'This';
   $newArray[1] = 'is';
   $newArray[2] = 'MariaDB';
   echo $newArray[0], " ", $newArray[1], " ", $newArray[2], "<br>";
?>

<?php
   $hap = 0;
   $myArray = range(1, 10);

   for($i=0; $i<10; $i++) {
      $hap = $hap + $myArray[$i];
   }
    echo "배열의 합계 : ", $hap;
?>

<?php
   $myArray = range(1, 10);

   echo "임의로 섞은 값 ==> ";
   shuffle($myArray);
   foreach($myArray as $data)
    echo $data, " ";
   
   echo "<br>오름차순 정렬 ==> ";
   sort($myArray);
   foreach($myArray as $data)
    echo $data, " ";

   echo "<br>내림차순 정렬 ==> ";
   rsort($myArray);
   foreach($myArray as $data)
    echo $data, " ";

   echo "<br>순서를 반대로 ==> ";
   $revArray = array_reverse($myArray);
     foreach($revArray as $data)
    echo $data, " ";
?>

 

  • PHP 내장 함수
<?php
   $today = "현재는 ".date("Y-m-j")." 입니다.";
    echo $today, "<br>";

   $ary = array(100, 50, 200, 7);
   echo "최대:", max($ary) ," 최소:", min(-123, 50, 999), "<br>";

   echo pi(), " ", round(M_PI), " ",ceil(M_PI), "<br>";

   $str = "   This is MariaDB   "; // 앞뒤 공백 3개씩
    $str = trim($str);
   echo "#", $str, "#", "<br>";
   
   echo "문자열 길이:", strlen($str), "<br>";

   echo str_repeat("-", 30), "<br>";

   echo str_replace( "MariaDB", "마리아디비", "This is MariaDB"), "<br>";

   $ary = explode(" ", "This is MariaDB");
   print_r($ary); echo "<br>"; // 배열 출력

     echo implode($ary, " "), "<br>";

   $myHTML = "<A href='www.hanbit.co.kr'> 한빛미디어 </A> <br>";
     echo $myHTML;
   echo htmlspecialchars($myHTML);
?>

  • HTML과 PHP 관계
  • 데이터 전송 개념
// send.html 파일
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
    
<FORM METHOD="post" ACTION="receive.php">
    아이디 : <INPUT TYPE ="text" NAME="userID">
    이름 : <INPUT TYPE ="text" NAME="userName">
    <BR><BR>
    <INPUT TYPE="submit" VALUE="전송">
</FORM>

</BODY>
</HTML>
// receive.php 파일
<?php
   $userID = $_POST["userID"];
   $userName = $_POST["userName"];

   echo "전달 받은 아이디 : ", $userID, "<br>";
   echo "전달 받은 이름 : ", $userName, "<br>";
?>

 

  • post get 전달 방식

결과는 동일, 차이점은

post 방식의 결과는 주소창에 localhost/receive.php만 있지만

get 방식의 결과는 주소 뒤에 '?변수=값&변수=값' 방식으로 값이 전달됨

get 방식을 썼을 때의 결과 주소창

 

  • HTML 문법으로만 구성된 파일의 확장명을 *.php로 저장해 사용해도 상관없음
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
    
<FORM METHOD="post" ACTION="receive.php">
    아이디 : <INPUT TYPE ="text" NAME="userID">
    이름 : <INPUT TYPE ="text" NAME="userName">
    <BR><BR>
    <INPUT TYPE="submit" VALUE="전송">
</FORM>

</BODY>
</HTML>

ex) 위와 같은 파일도 확장자를 .html이 아닌 .php로 저장해도 오류 메시지가 뜨지 않고 잘 실행됨