불러오기
//연결생성
$dbconn = mysql_pconnect($hostname_dbconn, $username_dbconn, $password_dbconn) or die(mysql_error());
mysql_select_db($database_dbconn, $dbconn);
//쿼리
$query_Recordset1 = "select * from php_board ";
$result = mysql_query($query_Recordset1, $dbconn) or die("리스트를가지고 오는데 실패하였습니다.".mysql_error());
while ( $line = mysql_fetch_array( $result ) ){
echo($line["idx"])
}
mysql_free_result($result); //종료
저장하기
$sql_query ="INSERT INTO PHP_BOARD (NAME , PASSWORD , E_MAIL , TITLE , CONTENT , MAKEDATE , READNUM) VALUES ($b_name , $b_e_mail , $b_passworld , $b_content , DATE() , 0 ) "
$result = mysql_query($sql_query , $dbconn ) or die("저장에 실패하였습니다.");
mysql_close($dbconn);
// 새 글 쓰기인 경우 리스트로..
echo ("<meta http-equiv='Refresh' content='1; URL=list.php'>");
이 확장 모듈은 다음의 상수를 정의합니다. 이는 확장 모듈을 PHP에 내장했거나, 실행시에 동적으로 읽어들일 경우에만 사용할 수 있습니다.
PHP 4.3.0부터 mysql_connect()과 mysql_pconnect()에 추가 클라이언트 플래그를 지정할 수 있습니다. 다음의 상수가 정의되어 있습니다:
표 2. MySQL client constants
상수
설명
MYSQL_CLIENT_COMPRESS
압축 프로토콜을 사용합니다.
MYSQL_CLIENT_IGNORE_SPACE
함수 이름 뒤의 공백을 허용합니다.
MYSQL_CLIENT_INTERACTIVE
접속을 종료하기 전 비활동의 (wait_timeout 대신) interactive_timeout 초를 허용합니다.
mysql_fetch_array()은 반환 배열을 다른 형식으로 나타내기 위한 상수를 사용합니다. 다음의 상수가 정의되어 있습니다:
표 3. MySQL fetch constants
상수
설명
MYSQL_ASSOC
배열 인덱스로 필드 이름을 가지는 배열로 컬럼을 반환합니다.
MYSQL_BOTH
배열 인덱스로 숫자 인덱스와 필드 이름을 둘 다 가지는 배열로 컬럼을 반환합니다.
MYSQL_NUM
필드에 대한 숫자 인덱스를 가지는 배열로 컬럼을 반환합니다. 인덱스는 결과의 첫번째 필드를 0으로 시작합니다.
예제
MySQL 데이터베이스에 접속하여, 쿼리를 실행하고, 결과열을 출력하고, 접속을 끊는 방법을 보여주는 간단한 예제입니다.
예 1. MySQL 확장 개요 예제
<?php
/* 접속하고, 데이터베이스를 선택 */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("접속할 수 없습니다 : " . mysql_error());
echo "접속 성공";
mysql_select_db("my_database") or die("데이터베이스를 선택할 수 없습니다.");
/* SQL 쿼리 실행하기 */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("쿼리 실패 : " . mysql_error());
/* HTML로 결과 출력하기 */
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
/* 결과셋 해제하기 */
mysql_free_result($result);
/* 접속 종료 */
mysql_close($link);
?>
- 차례
- mysql_affected_rows -- 최근 MySQL 작업으로 처리된 행(row) 개수를 얻음
- mysql_change_user -- 현 접속에서 로그인된 사용자를 변경
- mysql_client_encoding -- Returns the name of the character set
- mysql_close -- MySQL 접속을 닫음
- mysql_connect -- MySQL 서버에 접속
- mysql_create_db -- MySQL 데이터베이스를 생성
- mysql_data_seek -- 내부적인 결과 포인터를 이동
- mysql_db_name -- 데이터 결과를 얻음
- mysql_db_query -- MySQL 질의문을 전송
- mysql_drop_db -- MySQL 데이터베이스를 삭제
- mysql_errno -- 최근 MySQL 작업으로 발생한 에러 번호를 반환
- mysql_error -- 최근 실행된 MySQL 작업으로 발생한 에러 메시지를 반환
- mysql_escape_string -- Escapes a string for use in a mysql_query.
- mysql_fetch_array -- 결과를 필드이름 색인 또는 숫자 색인으로 된 배열로 반환
- mysql_fetch_assoc -- 결과를 필드이름 색인으로 된 배열로 반환
- mysql_fetch_field -- 결과로부터 열 정보를 얻어서 객체로 반환
- mysql_fetch_lengths -- 결과로부터 각 출력의 길이를 반환
- mysql_fetch_object -- 행(row)의 결과를 객체로 얻음
- mysql_fetch_row -- 결과를 숫자색인으로 된 배열로 반환
- mysql_field_flags -- 결과로부터 특정 필드(field)의 상태정보(flag)를 반환
- mysql_field_len -- 특정 필드의 길이를 반환
- mysql_field_name -- 결과로부터 특정 필드 이름을 반환
- mysql_field_seek -- 특정 필드의 오프셋(offset)으로 위치(pointer)를 이동
- mysql_field_table -- 특정 필드가 속한 테이블 이름을 얻음
- mysql_field_type -- 결과로부터 특정 필드의 데이터 형(type) 정보를 반환
- mysql_free_result -- Free result memory
- mysql_get_client_info -- Get MySQL client info
- mysql_get_host_info -- Get MySQL host info
- mysql_get_proto_info -- Get MySQL protocol info
- mysql_get_server_info -- Get MySQL server info
- mysql_info -- Get information about the most recent query
- mysql_insert_id -- 최근 INSERT 작업으로부터 생성된 identifier 값을 반환
- mysql_list_dbs -- MySQL 서버에 있는 데이터베이스 이름을 반환
- mysql_list_fields -- MySQL 결과의 필드 리스트로 반환
- mysql_list_processes -- List MySQL processes
- mysql_list_tables -- MySQL 데이터베이스에 있는 테이블 목록을 반환
- mysql_num_fields -- 결과로부터 필드 개수를 반환
- mysql_num_rows -- 결과로부터 열 개수를 반환
- mysql_pconnect -- MySQL 서버와 영구적인 데이터베이스 접속
- mysql_ping -- Ping a server connection or reconnect if there is no connection
- mysql_query -- Send a MySQL query
- mysql_real_escape_string -- Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection.
- mysql_result -- 결과 데이터를 반환
- mysql_select_db -- MySQL 데이터베이스를 선택
- mysql_stat -- Get current system status
- mysql_tablename -- 필드의 테이블이름을 얻음
- mysql_thread_id -- Return the current thread ID
- mysql_unbuffered_query -- Send an SQL query to MySQL, without fetching and buffering the result rows
ms sql
SELECT top 1 * FROM super_ball ORDER BY idx DESC
이렇게 사용못함
SELECT * FROM super_ball ORDER BY idx DESC LIMIT 1
----------------------------------------------------------------
MySQL에서 지원하는 데이터타입
INT : 4bytes 정수
CHAR(n) : 문자의 수가 n개인 문자열
VARCHAE(n) : 문자의 수가 최대 n개인 문자열
TEXT : 문자의 수가 최대 65535개인 문자열
CREATE TABLE (새로운 테이블 생성)
create table 테이블명 (
필드명 데이터타입 [NOT NULL]
{, 필드명 데이터타입 [NOT NULL]}*
[,PRIMARY KEY (필드명)]
)
ALTER TABLE(테이블구조 및 속성변경)
기존의 테이블구조 변경
1. 필드추가생성
ALTER TABLE 테이블명 ADD [COLUMN] 필드명 필드타입
예) ALTER TABLE userdb ADD COLUMN addr VARCHAR(100)
2. 필드속성변경
ALTER TABLE 테이블명 CHANGE [COLUMN] 기존필드명 새필드명 필드타입
예)ALTER TABLE userdb ADD addr VARCHAE(100)
예) ALTER TABLE userdb CHANGE COLUMN addr address VARCHAR(255)
3. 필드삭제
ALTER TABLE 테이블명 DROP [COLUMN] 필드명
예) ALTER TABLE userdb DROP COLUMN address
4. 기존의 테이블삭제
DROP TABLE 테이블명
SELECT (데이터검색하기)
SELECT [DISTINCT] 테이블명 {, 테이블명}*
FROM 필드명 {,필드명}*
[WHERE 검색조건]
[ORDER BY 필드명[ASC or DESC] {,필드명 [ASC or DESC]}*]
[GROUP BY 필드명 {, 필드명}*]
[HAVING 검색조건]
1. 일반적인 검색
SELECT name, id FROM userdb WHERE level = 'B'
SELCET * FROM userdb
SELECT name, id, email, sex, milage, level FROM userdb
2. 결과레코드의 중복제거
SELECT level FROM userdb
SELECT DISTINCT level FROM userdb
3. 조건검색
SELECT name, id, email FROM userdb WHERE milage > 3000 AND sex = 'M'
4. 검색결과의 정렬
SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage DESC
5. 검색결과에 대한 산술계산 및 문자열처리
SELECT name, '님의 마일리지는 ', milage, '점입니다.' FROM userdb WHERE milage >= 3000 ORDER BY milage
SELECT name, id, email, milage+300 FROM userdbWHERE id = 'soony'
6. 그룹함수(group function)를 이용한 검색
SELECT count(*) FROM userdb WHERE sex = 'F'
SELECT avg(milage) FROM userdb WHERE sex='F'
7. GROUP BY를 이용한 검색
SELECT level, max(milage), min(milage), avg(milage) FROM userdb GROUP BY level
SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex
8. HAVING을 이용한 검색
SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex HAVING sex = 'F'
9. BETWEEN 연산자를 이용한 검색
SELECT name, email, mailage, sex FROM userdb WHERE sex = 'F' AND milage BETWEEN 3000 AND 4000
SELECT name, email, milage, sex FROM userdb WHERE sex = 'F' AND milage >= 3000 AND milage <= 4000
SELECT name, sex, milage FROM userdb WHERE milage NOT IN (3300,3500,3700)
10. LIKE를 사용한 검색
SELECT name FROM userdb WHERE name, LIKE '%현%'
SELECT name, id, FROM userdb WHERE id LIKE 'm%'
11. NULL값을 갖는 데이터검색
SELECT name, id FROM userdb WHERE email IS NULL
SELECT name, id FROM userdb WHERE email IS NOT NULL
INSERT (새로운 데이터의 삽입)
INSERT INTO 테이블명 [(필드명{[, 필드명]}*)] VALUES (필드값)
INSERT INTO userdb (name, id, email, sex, milage, level) VALUES ('이완철', 'yunka1018','sspark@kornet.net'.'M','3500','B')
INSERT INTO userdb VALUES('이완철', 'yunka1018','sspark@kornet.net','M','3500','B')
INSERT INTO userdb (id, name) VALUES('yunka1018','정양미')
데이터의 수정(UPDATE)
UPDATE 테이블명 SET 필드명=필드값 또는 산술식 {, 필드명 = 필드값 또는 산술식}*[WHERE 검색조건]
UPDATE userdb SET sex = 'F' WHERE name = '김현아'
UPDATE userdb SET sex = 'F'
만일 위와 같이 WHERE절로 검색조건을 명시하지 않은 경우에는 해당테이블내의 모든레코드의 필드값이 설정한값으로 수정되므로 유의해야한다.
UPDATE userdb SET sex = 'F'
UPDATE userdb SET milage = milage + 300
DELETE (데이터의 삭제)
DELETE FROM 테이블명 [WHERE 검색조건]
DELETE FROM userdb WHERE id = 'king94'
DELETE FROM userdb
만일 위와 같이 검색조건을 지정하지 않으면 해당테이블내의 모든레코드가 삭제되므로 주의해야한다.
MYSQL 데이터베이스의 사용법
1. MYSQL서버의 기동과 종료
이하 디렉토리위치는 /usr/local/mysql/bin이다.
./bin/safe_mysql &
2. MYSQL서버의 종료 및 재기동
safelab.skku.ac.kr.pid파일은 MYSQL의 PID를 저장하고 있다.
kill -9 PID
mysqladmin -u root -p shutdown
mysqladmin -u root -p reload
3. mysqladmin 사용법
mysqladmin -u root -p reload
mysqladmin -u root -p create sample
mysqladmin -u root -p drop sample
4. mysql 클라이언트사용법
mysql -u root -pphp99 mysql
mysql -u root -p mysql
mysql>show databases;
mysql>show tables;
mysql>show columns from db;
mysql>desc db;
mysql>select host, user, password from user;
mysql>update user set password = password('php99') where user = 'root';
mysql>select host, user, password from user;
mysql>drop database sample;
5. 생성된 데이터베이스의 등록
mysql>insert into db values('%','sample','php','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>select host, db, user from db;
6. 새로운 사용자(데이터베이스 소유자)등록
mysql>insert into user (host, user, password) values('localhost','php','password('php99'));
mysql>select host, user, password from user;
7. 테이블의 생성과 수정 및 삭제
mysql -u root -p sample
mysql>show tables;
mysql>desc userdb;
mysql>alter table userdb change column id varchar(12) NOT NULL;
mysql>desc userdb;
mysql>drop table userdb;
mysql>show tables;
8. *.sql파일로 쉘에서 SQL명령어 실행
mysql -u root -p php99 sample < userdb.sql
mysql -u php -p sample
mysql>show tables;
9. 데이터의 백업과 복구
mysqldump -u [DB사용자명] -p [백업할 데이터베이스명] > [외부로 저장할 파일명]
mysqldump -u php -p sample > sample_backup.sql
cat sample_backup.sql
mysql -u php -p php99 sample < sample_backup.sql
'PHP' 카테고리의 다른 글
[ob_get_contents] 출력버퍼를 이용해서 버퍼의 내용가져오기 (0) | 2010.01.29 |
---|---|
나의 PHP 유틸클래스 (0) | 2010.01.08 |
PHP 초보들을 위한 초간단 TIP (0) | 2010.01.08 |
문자열함수 (0) | 2009.12.15 |
[PHP] 파일관련 함수 (0) | 2009.12.15 |
[PHP]기본문법 (0) | 2009.12.15 |
[FUNCTION] 자주쓰는 함수 (0) | 2009.12.15 |
PHP 가로로 출력 (0) | 2009.04.08 |
PHP 기본문법 (0) | 2009.04.06 |
Php 이미지 정보 알아내기 (0) | 2009.04.06 |