PHP 정리 3 - 함수

 

수(Function)

함수 정의: 매개변수나 return은 필요없을 경우 생략 가능.
function 함수명 (매개변수1, 매개변수2...){
    실행할 명령
    return 돌려줄 값;
}

함수 호출: 매개변수 없을 경우 인자 생략 가능, 반환값 없을 경우 받는 변수 생략 가능.
변수 = 함수명(전달할 인자들);

ex)
$a = 2;
$b = 3;
$c = add($a, $b); // add() 함수 호출

function add($x, $y){ // add() 함수 정의
    return $x + $y;
}
echo $c; // 5

MySQL 연동용 함수

PHP로 MySQL 데이터베이스를 연동시키는 함수들.

MySQL 서버에 접속하기, DB 지정하기, 접속끊기

MySQL 서버에 접속하기.
mysql_connect("서버주소", "사용자 ID", "비밀번호");

접속한 뒤 사용할 DB 지정하기.
mysql_select_db("DB 명", "DB 리소스 변수");

MySQL 서버에서 접속 끊기.
mysql_close("DB 리소스 변수");

ex)
<?php
$connect = mysql_connect("localhost", "Tom", "123");
//localhost 주소에 사용자ID Tom, 비밀번호 123으로 접속 시도
if ( !$connect) //접속 성공 여부 확인
    die("DB connect failed: " . mysql_error());
    //에러 메시지 출력한 뒤 프로그램 종료
mysql_select_db("testDB", $connect);
//testDB란 이름의 데이터 베이스 선택
mysql_close($connect);
//접속 끊기
?>

데이터 조작하기, 꺼내오기, 데이터 읽어오기, 레코드, 필드 수 알아내기

가로 행 = 레코드(record) = 로우(row)
세로 열 = 필드(field) = 컬럼(column)


MySQL 데이터 조작하기(MySQL 쿼리 실행): 쿼리 실행에 실패할 경우 FALSE를 리턴값으로 돌려준다.
mysql_query("퀴리", "DB 리소스 변수");

MySQL 데이터 꺼내오기.
$val = mysql_query("select * from 테이블 명, DB 리소스 변수");

레코드, 필드 수 알아내기.
mysql_num_rows(쿼리결과 리소스 변수);
mysql_num_fields(쿼리결과 리소스 변수);


데이터 뽑아내기. select 쿼리를 통해 얻어진 테이블 데이터에서 각 필드값을 뽑아낼 때 사용.
mysql_fetch_row(쿼리결과 리소스 변수);
결과값에서 레코드를 한줄씩 차례로 뽑아 각 필드 요소를 배열로 반환하는 함수.
더이상 꺼낼 레코드가 없으면 false를 반환한다.
mysql_fetch_array(쿼리결과 리소스 변수);
결과값에서 레코드를 한줄씩 차례로 뽑아 각 필드 요소를 연관배열로 반환하는 함수. 더이상 꺼낼 레코드가 없으면 false를 반환한다.
mysql_result(쿼리결과 리소스 변수, 레코드 번호, 필드 번호);
결과값에서 해당 번호의 레코드 중 해당 번호의 필드를 뽑아 반환하는 함수.
더이상 꺼낼 레코드가 없으면 false를 반환한다.

ex)
<?php
$connect = mysql_connect ("localhost", "testman", "1234"); //접속하기
mysql_select_db("test_db", $connect); //testdb 데이터베이스 사용 선택

$qry = "select * from test_table";
$datum = mysql_query($qry, $connect);
//test_table 테이블에서 데이터 꺼내오기

이 위쪽 코드는 공통 사용.

mysql_fetch_row()를 사용할 경우----------------------

$numField = mysql_num_fields($datum);
//가져온 데이터의 필드 수 변수에 저장
while($row = mysql_fetch_row($datum)){ //레코드 수 만큼 반복
    for($i = 0; $i < $numField; $i++) { //필드 수 만큼 반복
        echo "$row[$i] ";
    }
    echo "<br>";
}
?>

mysql_fetch_array()를 사용할 경우----------------------

while($row = mysql_fetch_array($datum)){ //레코드 수 만큼 반복
        echo "$row[num] $row[name] $row[title]";
        //연관배열이므로 for문이 필요없되 필드명을 적어줘야 한다.
        echo "<br>";  
}
?>

mysql_result()를 사용할 경우-----------------------------

$numRecord = mysql_num_rows($datum);
//가져온 데이터의 레코드 수 변수에 저장
$numField = mysql_num_fields($datum);
//가져온 데이터의 필드 수 변수에 저장
for($i=0; $i < $numRecord; $i++){
   for($j=0; $j < $numField; $j++){
      $f=mysql_result($datum, $i, $j);
      echo "$f ";
    }
    echo "<br>";
}
?>

기타 PHP 기본 함수

date("형식");
현재의 날짜,요일,시간등을 원하는 형식대로 알려준다.
a: am, pm
A: AM, PM
d: 날짜 2자리 정수
D: 요일 앞 3글자(Mon, Tue)
F: 달 이름 (March, April)
h: 시간 2자리 정수(12시간)
H: 시간 2자리 정수(24시간)
i: 분 2자리 정수
l(소문자L): 요일 글자(Monday, Tuesday)
m: 달 2자리 정수(1, 3, 12)
M: 달 이름 3글자(Mar, Apr)
s: 초 2자리 정수
t: 해당 달의 일 수(28, 30, 31)
Y: 년 4자리 정수(2013)
y: 년 2자리 정수(13)
z: 해당 년 1월1일부터 몇일째

ex) echo date("Y-m-d D A h:i:s");
//2013-04-15 Mon AM 12:43:49 형식으로 오늘 날짜,시간등을 보여줌
unset(변수명);
변수의 값을 없애준다.

ex) $a = "hello";
echo $a; // hello
unset($a);
echo $a; // 아무 것도 출력되지 않음

number_format(숫자);
숫자를 3자리마다 쉼표를 넣은 문자열로 리턴

ex) echo number_format(1000000); // 1,000,000
header("Location:이동할 주소명") ;
이동할 주소로 적은 곳으로 이동한다.
ex) header("Location:go.php"); // 같은 폴더내의 go.php로 이동한다.
header("Location:http://www.google.com"); //구글로 이동한다.
move_uploaded_file(임시 파일명, 이동 후 파일명);
임시폴더에 임시파일명으로 업로드된 파일을 특정 폴더에 지정한 이름으로 옮겨준다.
ex) move_uploaded_file($_FILES[upfile][tmp_name], "upfiles/" . $FILES[upfile][name]); //upfile이란 컨트롤을 통해 업로드된 임시파일을 원래의 파일명으로 upfiles란 폴더로 이동시킨다.
mail(보낼 주소, 제목, 내용, 보낸 사람 주소.참조.비밀참조);
지정된 주소로 이메일로 전송하기.

ex) $to = 'to@email.com';
$subject = 'It's mailing test';
$$msg = 'just test...';
$from = 'from@email.com';
$cc = 'cc@email.com';
$bcc = 'bcc@email.com';
mail($to, $subject, $msg, 'From: '. $from . "\r\cCc:" . $cc . "\r\cBcc". $bcc); //보낼 주소, 제목, 내용, 보낸 사람 주소, 참조, 비밀참조

-2013.4.14
-2014.9.28 내용 추가