[MySQL] 특정 ID별 최신 시간 데이터 추출

Database
DB에 사용자 ID 별로 시간 단위로 기록을 하고 있습니다.해당 항목에 대해서 목록을 뽑을때 사용한 쿼리 입니다. SELECT * FROM ( SELECT uid, id, balance, datetime FROM table ORDER BY datetime DESC ) AS subQuery GROUP BY DATE_FORMAT(datetime,'%Y-%m-%d'), id ORDER BY id DESC, datetime DESC
Read More

[MySQL] limit , offset

Database
게시판을 만들거나 혹은 전체 목록에서 페이지를 나누다 보면은 항상 사용하게 되어 있습니다. 조금은 형태를 바꾼 방식이라고 보시면 됩니다. /* 1번 query */ SELECT * FROM Orders LIMIT 10 OFFSET 15 /* 2번 query */ SELECT * FROM Orders LIMIT 15, 10 위에 쿼리에 보이듯이 1번, 2번은 동일한 결과물이 나오도록 합니다.정확하게 설명은 못하겠지만은 쿼리의 성능을 올리기 위해라고 저는 이해 하고 있습니다. 좀 더 설명을 잘하지 못해서 제가 검색한 사이트인 "http://crystalcube.co.kr/163" 의 링크를 걸어 놓겠습니다. 참조 http://www.w3schools.com/php/php_mysql_select_limit.asphttp://ralf79.tistory.com/722
Read More

[PHP] PHP MySQL PDO Class 파일 Ver. 2

PHP
[PHP] PHP MySQL PDO Class 파일 Ver. 2 기존에 동일한 게시물이 있습니다. 물론 크게 변하지는 않았지만 요구하는 조건이 서로 다르기에 글을 하나더 늘리는 방향으로 잡았습니다.다소 중복된 글이 있더라도 양해해주시기 바랍니다.이전 게시물을 보기 위해서는 이곳(PHP MySQL PDO Class 파일)을 클릭해주십시오. 이렇게 변경한 이유는 게시판에 사용을 하기 위해서 하다보니 매일 limit 를 사용하고 전체 게시물을 구하는 작업을 좀 줄여 보기 위해서 입니다.실제적으로는 MySQL에 쿼리를 2번 조회하지만 실행 파일에서는 1번만 하면은 모든것이 됩니다.limit , offset을 조합해서 사용할 수 있도록 수정을 한 버전입니다. <?php class DbMysqlLocal { private $host = 'localhost'; private $user = 'user '; private $pass = 'pass '; private $dbname = 'dbname '; private $port = '3306'; private $dbh; private $error; private $stmt; private $stmt1; private $foundrow; public function __construct() { // Set DSN $dsn = 'mysql:host='.$this->host.';port='.$this->port.';dbname='.$this->dbname; // Set options //…
Read More

[PHP] class 자동 로딩(autoload)

PHP
[PHP] class 자동 로딩(autoload) 지속적으로 class 파일이 늘어 남으로 인해서 include, require 를 사용하기도 힘들어지기도 합니다.그래서 최상단에 모든 파일이 1개 파일을 호출 하면은 class 파일은 자동으로 로딩하도록 하기 위해서 PHP에서 제공하는것을 사용해서 사용을 하고 있습니다. /* 편의상 comm.php 라고 해당 파일을 명명하겠습니다. */ define('_CLASSPATH_', '/home/user/class'); spl_autoload_register(function ($class) { require_once (_CLASSPATH_.'/class/'.$class.'.class.php'); }); 위에 파일을 하나 만들고 사용하고 싶은곳은 파일에서 위의 파일을 include, require 하면 됩니다. 이렇게 하면은 class 파일간에 상속이 필요하지 않습니다.제가 만들다가 알게 된것이라서 100% 공식적인 기능이라고 생각 하지 않지만 저는 잘 사용하는 편입니다. class 파일은 welcome.class.php , getout.class.php 파일입니다.실제 실행되는파일은 main.php 파일입니다. main.php 파일은 welcome.class.php 을 선언하고 사용을 하지만은 올바르지 않으면은 쫒아 내려고 합니다.welcome.class.php 파일은 일단 환영을 하도록 되어 있지만 쫒아내는 기능은 없습니다. 저는 예전에는 main.php 파일에서 welcome.class.php 도 포함하고 getout.class.php 도 포함해서 사용을 했지만은 지금은 이렇게 사용을 하고…
Read More

[PHP] SSH2 함수들

PHP
SSH2 함수들 . ssh2_auth_agent - ssh agent를 사용하여 SSH를 인증합니다. 2. ssh2_auth_hostbased_file - 공용 hostkey를 사용하여 인증합니다. 3. ssh2_auth_none - "none"으로서 인증합니다. 4. ssh2_auth_password - 일반적은 비밀번호를 사용하여 SSH를 인증합니다. ssh2_auth_password(컨넥션, 아이디, 비밀번호) 5. ssh2_auth_pubkey_file - 공용 키를 사용하여 인증합니다. 6. ssh2_connet - SSH 서버에 접속합니다. ssh2_connect(서버주소, 포트); 7. ssh2_exec - 원격 서버에 명령어를 실행합니다. ssh2_exec(컨넥스, 절대경로/파일명령어); 8. ssh2_fetch_stream - 확장된 데이터 스트림을 가져옵니다. 9. ssh2_fingerprint - 원격 서버들로 부터 fingerprint를 복구 합니다. 10. ssh2_methods_negotiated - negotiated 메소드들의 리스트를 리턴 합니다. 11. ssh2_publickey_add - 인증된 publickey를 추가합니다. 12. ssh2_publickey_init - publickey 서브시스템을 초기화 합니다. 13. ssh2_publickey_remove - 인증된 publickey를 제거합니다. 14. ssh2_scp_recv - SCP를 통해 파일을 요청합니다. ssh2_scp_recv(컨넥션, 리모트 경로, 로컬 경로); 15. ssh2_scp_send - SCP를 통해 파일을 전송합니다. (컨넥션, '/경로/옴길파일명', '/복사될경로/복사될파일명', 퍼미션(0644)) 16. ssh2_sftp_chmod - 파일 모드를 변경합니다. (컨넥션,…
Read More

[PHP] 문자 타입 체크

PHP
function StrTypeCheck($str, $type){ switch ($type){ case "digit": //숫자만 $filter = "'^[[:digit:]]*$'"; break; case "alpha": //영문만 $filter = "'^[[:alpha:]]*$'"; break; case "alnum": //영문,숫자만 $filter = "'^[[:alnum:]]*$'"; break; case "falnum": //영문,숫자만(첫자는 영문) $filter = "'^[a-zA-Z][0-9a-zA-Z]*$'"; break; case "lalpha": //소-영문만 $filter = "'^[a-z]*$'"; break; case "ualpha": //대-영문만 $filter = "'^[A-Z]*$'"; break; case "lalnum": //소-영문,숫자만 $filter = "'^[0-9a-z]*$'"; break; case "ualnum": //대-영문,숫자만 $filter = "'^[0-9a-z]*$'"; break; case "email": //이메일 $filter = "'^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$'"; break; case "domain": //도메인 $filter = "'^[a-zA-Z0-9]*((-|\.)?[a-zA-Z0-9])*\.([a-zA-Z]{2,4})$'"; break; case "koralnum": //한글숫자영문 $filter = '/^([\xEA-\xED][\x80-\xBF]{2}|[0-9a-zA-Z])+$/'; break; case "koralnumspace": //한글숫자영문공백 $filter = '/^([\xEA-\xED][\x80-\xBF]{2}|[0-9a-zA-Z\s])+$/'; break; case "kor": //한글 $filter = '/^([\xEA-\xED][\x80-\xBF]{2})+$/'; break; } if( preg_match($filter, $str, $matches) ) return true; else return false; }
Read More

[NGINX] userdir 추가

WWW
[NGINX] userdir 추가 location ~ ^/~([^/]+)/(.+\.php|\.htm)$ { if (!-f /home/$1/www/$2) { rewrite ^ 404; } alias /home/$1/www/$2; } location ~ ^/~([^/]+)(/.*)?$ { alias /home/$1/www$2; autoindex on; }
Read More

[PHP] PHP MySQL PDO Class 파일

PHP
평소 작업을 하기 위해서 SQL 인젝션도 생각해야 되고 조금 귀찮은 부분이 있었는데....이제는 그냥 PDO를 사용해 버립니다. 그럼으로 인해서 인젝션는 그냥 조금 무시하는 편입니다. <?php class dbMysql { private $host = "localhost"; private $user = "사용자"; private $pass = "암호"; private $dbname = "데이터베이스"; private $dbh; private $error; private $stmt; public function __construct() { // Set DSN $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname; // Set options $options = array( PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ); // Create a new PDO instanace try{ $this->dbh = new PDO($dsn, $this->user, $this->pass, $options); $this->dbh->exec("SET CHARACTER SET utf8"); } // Catch any errors catch(PDOException $e){ $this->error = $e->getMessage(); } } /** * @brief * **/ public function query($query){ $this->stmt = $this->dbh->prepare($query); //echo $query.chr(10); } public function bind($param, $value, $type = null){ if…
Read More