ALTER TABLE `table` CHANGE `기존 컬럼명` `변경 컬럼명` 타입 ex) int;


ALTER TABLE `table` ADD `추가 컬럼명` 타입;




root로 접속을 해서



사진에서 보이듯 


useradd 계정이름

passwd 계정이름


을 차례대로 치면 New password:가 뜬다.


새로운 비밀번호를 입력하고 Retype 이 뜨면 또 새로운 비밀번호를 쳐서

두 비밀번호가 동일할 경우 비밀번호가 업데이트 성공했다고 뜬다.


계정이 제대로 생성된걸 확인하고 싶으면


cat /etc/passwd

cut -f1 -d: /etc/passwd


두가지 방법중 하나로 확인하면 된다.




시작하기 전에

PHP는 급격하게 성장하며 더 나은 프로그래밍 언어가 되고 있다. 보통 동적인 언어가 생겨나면 그 언어는 프로그래머가 거리낌없이 기업 애플리케이션을 만들 수 있도록 하기 위해 더 엄격해진다.

PHP의 경우 더 나은 PHP는 객체 지향 PHP를 의미한다. 이 뜻은 여러분이 더 많은 객체를 사용하고, 더 나은 코드 테스트를 할 수 있고, 재사용 가능한 컴포넌트를 작성하고, 일반적으로 여러분의 연봉이 오른다는 의미이다.

PDO를 사용하는 것은 객체지향과 재사용 가능한 애플리케이션의 데이터베이스 층을 만드는 첫단계이다. 이 문서의 나머지 부분에서 볼 내용과 같이 PDO로 객체지향 코드를 작성하는 것은 생각보다 더 간단하다.

PDO 존재를 확인하기

만일 여러분이 PHP 5.5.X나 그 이상을 사용한다면 이미 PDO를 포함하고 있을 확률이 있다. 확인하기 위하여 간단하게 리눅스, Mac OS X, 윈도우 명령 프롬프트에서 터미널을 열고 다음과 같은 명령어를 따라하라.

<?php phpinfo();?>
를 통해서 PDO를 검색해 PDO가 있는지 확인해본다.

PDO가 있을 경우에 이 부분은 건너 뛰어도 된다.

PDO가 없을경우에 설치를 진행해야하는데 진행 방법은 의외로 간단하다.

mysql로 접속해 
sudo yum --enablerepo=remi,remi-php56 install php-pdo
sudo yum --enablerepo=remi,remi-php56 install php-mysqlnd
를 차례대로 입력한다.


그다음 php.ini 파일에 접속을 하여서
;extension=php_pdo_mysql.dll의 ; 주석을 제거한다.

이제 사용환경 설정은 끝났으니 기본적인 연결을 알아보겠다.
PDO의 선언의 기본은 try catch 안에서 한다.


$db_info['host'] = 'localhost'; 
$db_info['database'] = 'database_name'; 
$db_info['user'] ='id'; 
$db_info['password'] = 'pw'; 

try{ 
    $con = new PDO('mysql:host='.$db_info['host'].';dbname='.$db_info['database'].';charset=utf8', 
                                  $db_info['user'], $db_info['password']); 
    $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
}catch(PDOException $e) { 
    echo $e->getMessage(); 
}

- PDO::ATTR_EMULATE_PREPARES : 이 속성은 Preppared Statement 를 데이터베이스가 지원 하지 않을 경우 에뮬레이션 하는 기능으로 false 를  지정하서 데이터베이스의 기능을 사용하도록 한다.

- PDO::ATTR_ERRMODE : 이 속성은 PDO 객체가 에러를 처리하는 방식을 결정한다. 


$query = "SELECT COUNT(*) AS cnt FROM member WHERE member_id = ?"; 
$result = $con->prepare($query); 
$result->execute(array($member_id)); 
$row = $result->fetchAll(PDO::FETCH_NUM);

인젝션 방어를 위해서 PDO에서는 placeholder를 사용하는데, 변수가 들어갈 곳에 ?를 넣는다.
그리고 스테이트먼트를 생성하고, 배열을 통해 변수 값을 ?에 순서에 맞게 집어넣는다.

PDO::FETCH_NUM : 숫자 인덱스 배열 반환
PDO::FETCH_ASSOC : 컬럼명이 키인 연관배열 반환
PDO::FETCH_BOTH : 위 두가지 모두
PDO::FETCH_OBJ : 컬럼명이 프로퍼티인 인명 객체 반환

변수가 없을경우에는
$query = "SELECT COUNT(*) AS cnt FROM member"; 
$result = $con->prepare($query); 
$result->execute(); 
$row = $result->fetchAll(PDO::FETCH_NUM);


이렇게 써도 무방하다.




PHP에서 MySQL에 연결할때 사용하는 함수는 mysql_connect와 mysqli_connect가 있다.

이 두가지의 차이는 mysql가 php5버전 이후로 지원되는 것으로 mysql에 비해서
속도가 빠르고 보안이 훨씬 잘되어 있다는 점이다.

mysql은
mysql_fetch_array(mysql_query($query));
이런 형식으로 사용이 가능하지만

mysqli는
$result = mysqli_query($db_connect, $query);
mysqli_fetch_array($result);
이런 형식으로 따로따로 써준다.

그리고 query문을 써줄 때 꼭 앞에 데이터 베이스를 connect한 변수명이 들어가야한다.






이 에러는 mysqli에서 나는 에러로
mysqli일 경우 group by를 쓰게 되면
sum이나, min, max, avg를 쓰지 않은 모든 칼럼명을
다 group by에 집어넣어줘야한다.

예시

SELECT idx, {$key_product_number}, site_name, SUM(exposure_cnt) AS exposure_cnt, SUM(click_cnt) AS click_cnt, SUM(total_pay) AS total_pay, SUM(change_cnt) AS change_cnt, SUM(change_pay) AS change_pay, AVG(rank_ave) AS rank_ave FROM {$table_name} WHERE master_id='{$master_id}' {$w_sql} GROUP BY {$key_product_number}

일 경우 에러가 날것이다

하지만

SELECT idx, {$key_product_number}, site_name, SUM(exposure_cnt) AS exposure_cnt, SUM(click_cnt) AS click_cnt, SUM(total_pay) AS total_pay, SUM(change_cnt) AS change_cnt, SUM(change_pay) AS change_pay, AVG(rank_ave) AS rank_ave FROM {$table_name} WHERE master_id='{$master_id}' {$w_sql} GROUP BY {$key_product_number}, idx

이렇게 맨뒤에 idx 값을 준다면 에러가 나지 않는다






1. 테이블의 인덱스 추가하기
ALTER TABLE tablename ADD INDEX indexname (column1, column2);

2. 테이블의 유니크 인덱스 추가하기
ALTER TABLE tablename ADD UNIQUE INDEX indexname (column1, column2);

3. 테이블의 인덱스 삭제하기
ALTER TABLE tablename DROP INDEX indexname;




$sql = "SHOW FULL PROCESSLIST"; 
$result = mysql_query($sql); 

print_r(mysql_fetch_array($result));

//출력되는 array에서 id 값을 가져와 id번호에 넣어준다.
$sql = "KILL id번호";
$result = mysql_query($sql); 




$table_name_week = "테이블명";

$sql = "SHOW TABLES LIKE `{$table_name_week}`";
$result_exist = mysql_query($sql); 
$row_exist = mysql_fetch_array($result_exist); 

$a=0; 
while($row_exist != true){ 
    '없을 경우 실행문';
}

+ Recent posts