sql

[Sql/php] rownum 결과 값에서 몇번째 행인지 구하기

SQL 쿼리를 통해 데이터를 가져와서 해당 데이터가 몇번째에 위치해 있는지 구할때 ROWNUM 기능을 활용해 불러올 수 있다. 나의 경우에는 해당 날짜의 주문건을 불러와 주문번호 순서대로 1부터 차례대로 번호를 매기는 작업이 필요하여 아래와 같이 쿼리문을 작성하였다. SELECT @ROWNUM: = @ROWNUM + 1 AS rownum, od_id FROM table as a, ( SELECT @ROWNUM: = 0 ) r WHERE od_invoice_time between '2023-05-31 00:00:00' and '2023-05-31 23:59:59' ORDER BY od_id ASC 그러면 이렇게 조건에 해당하는 데이터들이 순서대로 번호가 매겨지게 된다. 이 중에서도 특정 데이터가 몇번째에 ..

sql 컬럼 내용 중 특정 문자 바꾸기

DB의 수많은 데이터 중에 특정 컬럼의 내용을 변경하고 싶은 경우 아래와 같이 명령문을 사용하면 된다. UPDATE 테이블명 SET 컬럼명 = REPLACE(컬럼명 ,'변경전 문자','변경후 문자') 예시 아래와 같이 하면, member 테이블에서 mb_hp 컬럼 중 '-'를 공백으로 처리하여 회원 핸드폰 번호의 -를 한번에 없앨 수 있다. UPDATE member SET mb_hp = REPLACE(mb_hp ,'-','')

[MySQL] #1067 'ct_time'의 유효하지 못한 디폴트 값을 사용하셨습니다. 오류 해결

문제상황 phpMyAdmin에서 칼럼을 수정하거나 삭제하려고할 때마다 #1067 -'ct_time'의 유효하지 못한 디폴트 값을 사용하셨습니다. 라고 오류가 발생한다. ct_time 컬럼 형식은 datetime이고 기본값이 0000-00-00 00:00:00 이었는데, 기존에 서버에 설치해서 사용할 때는 아무 문제 없다가 이번에 새로운 서버에 새롭게 영카트를 설치하면서 문제가 발생했다. 이 문제는 mysql 5.6 이후로 mysql 문법이 엄격해지면서 발생한다고 한다. mysql 5.5 이하 버전에서는 기본이 false 였지만, 5.6부터는 기본이 true 여서 발생하는 문제. 5.6의 문법에 맞게 입력하거나 아래의 방법으로 해결이 가능하다. 해결방법 SQL_MODE에서 "NO_ZERO_IN_DATE,N..

[php] sql 구문으로 테이블 값 가져오는 방법

기본 sql 구문 $sql = " select * from 테이블명 where wr_is_comment = '0' and wr_id = '{$view['wr_id']}' "; $row = sql_query($sql); 이 기본 구문은 배열로 보여주기 때문에 보통 for 문과 함께 많이 사용한다. 아래와 같이 for문과 함께 사용하면 해당되는 값을 모두 불러온다. [for문과 함께 사용 예시] $sql = " select * from 테이블명 where wr_is_comment = '0' "; $result = sql_query($sql); for ($i=0; $row=sql_fetch_array($result); $i++) { echo $row['id']; } where 조건절에 해당하는 값이 딱 한개만..

[php] sql 쿼리 반복문으로 데이터를 불러오는 여러가지 방법 (for문, while문)

어떤 코드를 반복적으로 사용할 때 for문과 while문을 많이 사용한다. for문 vs. while문의 차이점은 for문은 반복 횟수가 정해져있을 때 주로 사용하고, while문은 반복 횟수가 정해져있지 않고, 값이 있는 만큼 계속 반복해서 보여줄 때 사용한다. for문 예시 sql문 + for문 보통 이 경우는 sql 조건문에 해당하는 자료 갯수 구해서 갯수만큼 뿌려오도록 하는데 아래 처럼 모두 나오게 할 수도 있다. while문 예시 sql문 + while문