반응형

[MariaDB] 마리아DB PYTHON - 파이썬과 MariaDB 연계 (MySQL)

 

파이썬에서 마리아DB에 연결을 하기 위해서는 pymysql을 설치해야 합니다.

pip install pymysql

 

파이썬에서 MariaDB 연결부터 종료까지의 단계는 아래와 같습니다.

  1. MariaDB 연결: 연결자이름=pymysql.connect(연결옵션)
  2. 커서생성: 커서이름=연결자이름.cursor()
  3. SQL문 실행: 커서이름.execute("SQL문장")
  4. 데이터저장: 연결자이름.commit()
  5. MariaDB 연결종료: 연결자이름.close()

 

먼저 MariaDB에서 sql문으로 pythonDB 생성

DROP DATABASE IF EXISTS pythonDB;
CREATE DATABASE pythonDB;

 

 

파이썬에서 MariaDB에 연결하고 테이블 생성

import pymysql  # pymysql 임포트

# 전역변수 선언부
conn = None
cur = None

sql=""

# 메인 코드
conn = pymysql.connect(host='MariaDB서버 IP', user='root', password='1234', db='pythonDB', charset='utf8')	# 접속정보
cur = conn.cursor()	# 커서생성

sql = "CREATE TABLE IF NOT EXISTS userTable (id char(4), userName char(10), email char(15), birthYear int)"	# 실행할 sql문
cur.execute(sql)	# 커서로 sql문 실행

conn.commit()	# 저장

conn.close()	# 종료

 

HeidiSQL로 테이블이 정상 생성 됐는지 확인해 봅니다. 

 

 

파이썬으로 입력받는 값들을 테이블의 데이터로 입력하는 프로그램

import pymysql  # pymysql 임포트

# 전역변수 선언부
conn = None
cur = None

data1 = ""
data2 = ""
data3 = ""
data4 = ""

sql=""

# 메인 코드
conn = pymysql.connect(host='MariaDB서버 IP', user='root', password='1234', db='pythonDB', charset='utf8')
cur = conn.cursor()

while (True) :	# brack를 만날때까지 계속 반복
    data1 = input("사용자 ID를 입력하세요(엔터 클릭 시 종료): ")	# data1변수에 ID 입력받기
    if data1 == "" :	# 만약 data1에 아무값도 입력받지 않는다면
        break;	# break;로 while문을 떠남
    data2 = input("사용자 이름을 입력하세요: ")
    data3 = input("사용자 이메일을 입력하세요: ")
    data4 = input("사용자 출생연도를 입력하세요: ")
    sql = "INSERT INTO userTable VALUES('" + data1 + "','" + data2 + "','" + data3 + "'," + data4 + ")"	# sql변수에 INSERT SQL문 입력
    cur.execute(sql)	# 커서로sql 실행

conn.commit()	# 최종 저장
conn.close()	# 접속 종료

 

AAA, BBB, CCC 데이터를 입력합니다. 마지막엔 엔터로 반복문을 벗어납니다.

 

HeidiSQL로 테이블 데이터가 정상 입력 됐는지 확인해 봅니다. 

 

 

파이썬에서 저장된 데이터를 변수로 받아 출력하는 프로그램

import pymysql  # pymysql 임포트

# 전역변수 선언부
conn = None
cur = None

data1 = ""
data2 = ""
data3 = ""
data4 = ""

row = None	# 테이블의 행을 받아줌

# 메인 코드
conn = pymysql.connect(host='MariaDB서버 IP', user='root', password='1234', db='pythonDB', charset='utf8')
cur = conn.cursor()

cur.execute("SELECT * FROM userTable")	# sql 변수 없이 SQL문을 직접 입력후 커서로 실행

print("사용자ID    사용자이름    이메일        출생연도")
print("----------------------------------------------------")

while (True) :	# 반복실행
    row = cur.fetchone()	# row에 커서(테이블 셀렉트)를 한줄 입력하고 다음줄로 넘어감
    if row== None :	# 커서(테이블 셀렉트)에 더이상 값이 없으면
        break	# while문을 빠져나감
    data1 = row[0]
    data2 = row[1]
    data3 = row[2]
    data4 = row[3]
    print("%5s   %15s   %15s   %d" % (data1, data2, data3, data4))

conn.close()

 

 

테이블을 입력하고 조회하는 윈도우 프로그램 (GUI 프로그램)

import pymysql
from tkinter import *
from tkinter import messagebox


## 함수 선언부

# btnInsert 클릭 시 호출되는 함수
def insertData() :
    con, cur = None, None
    data1, data2, data3, data4 = "", "", "", ""
    sql=""

    conn = pymysql.connect(host='MariaDB서버 IP', user='root', password='1234', db='pythonDB', charset='utf8')
    cur = conn.cursor()

    data1 = edt1.get()
    data2 = edt2.get()
    data3 = edt3.get()
    data4 = edt4.get()
    # entry(한줄텍스트박스)로 입력받은 값을 data 변수들에 입력
    
    try :   # 예외처리 시작
        sql = "INSERT INTO userTable VALUES('" + data1 + "','" + data2 + "','" + data3 + "'," + data4 + ")"
        cur.execute(sql)
    except :    # 에러발생 시 작동
        messagebox.showerror('오류', '데이터 입력 오류가 발생함')
    else :  # 에러 없을 시 작동
        messagebox.showinfo('성공', '데이터 입력 성공')
    conn.commit()
    conn.close()


# btnSelect 클릭 시 호출되는 함수
def selectData() :
    strData1, strData2, strData3, strData4  = [], [], [], []
    
    conn = pymysql.connect(host='MariaDB서버 IP', user='root', password='1234', db='pythonDB', charset='utf8')
    cur = conn.cursor()
    cur.execute("SELECT * FROM userTable")
    
    strData1.append("사용자ID")
    strData2.append("사용자이름")
    strData3.append("이메일")
    strData4.append("출생연도")
    strData1.append("-----------")
    strData2.append("-----------")
    strData3.append("-----------")
    strData4.append("-----------")
    # strData에 위에 값들을 먼저 추가
    
    while (True) :
        row = cur.fetchone()    # 위에서 커서 실행으로 셀렉트한 테이블값을 한줄씩 row에 입력 후 다음줄로
        if row== None : 
            break;
        strData1.append(row[0]) # 리스트 strData1에 테이블 셀렉트한 첫번째 값 row[0] 입력
        strData2.append(row[1])
        strData3.append(row[2])
        strData4.append(row[3])

    listData1.delete(0,listData1.size() - 1)    # 리스트박스에 있는 값들을 모두 지워버림
    listData2.delete(0,listData2.size() - 1)
    listData3.delete(0,listData3.size() - 1)
    listData4.delete(0,listData4.size() - 1)
    
    for item1, item2, item3, item4 in zip(strData1, strData2, strData3, strData4 ): #item에 strData들을 한줄씩 입력
        listData1.insert(END, item1)    # 리스트박스 마지막줄에 item 값들을 넣어줘서 보여
        listData2.insert(END, item2)
        listData3.insert(END, item3)
        listData4.insert(END, item4)
    conn.close()    

## 메인 코드부
window = Tk()
window.geometry("600x300")
window.title("GUI 데이터 입력")

edtFrame = Frame(window);
edtFrame.pack()
listFrame = Frame(window)
listFrame.pack(side = BOTTOM,fill=BOTH, expand=1)

edt1= Entry(edtFrame, width=10)
edt1.pack(side=LEFT,padx=10,pady=10)

edt2= Entry(edtFrame, width=10)
edt2.pack(side=LEFT,padx=10,pady=10)

edt3= Entry(edtFrame, width=10)
edt3.pack(side=LEFT,padx=10,pady=10)

edt4= Entry(edtFrame, width=10)
edt4.pack(side=LEFT,padx=10,pady=10)


btnInsert = Button(edtFrame, text="입력", command = insertData)
btnInsert.pack(side=LEFT,padx=10,pady=10)

btnSelect = Button(edtFrame, text="조회", command = selectData )
btnSelect.pack(side=LEFT,padx=10,pady=10)

listData1 = Listbox(listFrame,bg = 'yellow')
listData1.pack(side=LEFT,fill=BOTH, expand=1)

listData2 = Listbox(listFrame,bg = 'yellow')
listData2.pack(side=LEFT,fill=BOTH, expand=1)

listData3 = Listbox(listFrame,bg = 'yellow')
listData3.pack(side=LEFT,fill=BOTH, expand=1)

listData4 = Listbox(listFrame,bg = 'yellow')
listData4.pack(side=LEFT,fill=BOTH, expand=1)

window.mainloop()

조회
데이터 입력 후 다시 조회
HeidiSQL에서 입력한 데이터 확인

 

 

[MariaDB] 전체보기

 

'MariaDB' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

(PYTHON)파이썬 tkinter 윈도우 프로그램 - 창 메뉴, 함수호출, 그리기

 

from tkinter import *

윈도우 = Tk()

메인메뉴 = Menu(윈도우) # 메인메뉴 변수에 Menu설정(윈도우창생성)
윈도우.config(menu=메인메뉴)

파일메뉴 = Menu(메인메뉴)

메인메뉴.add_cascade(label="파일", menu=파일메뉴) # .add_cascade 상위메뉴와 하위 메뉴 연결 (상위=파일메뉴 "파일")
파일메뉴.add_command(label="열기")    # .add_command 기본 메뉴 항목생성
파일메뉴.add_separator()    # .add_separator() 구분선 생성
파일메뉴.add_command(label="종료")

window.mainloop()

 

from tkinter import *
from tkinter import messagebox	# 메세지박스 사용

# 함수 선언부
def func_open() :   # func_open 함수 선언
    messagebox.showinfo("메뉴선택", "열기 메뉴를 선택함")   # 메세지박스 띄우기

def func_exit() :   # func_exit 함수 선언
    window.quit()
    window.destroy()    # 창 종료

# 메인 코드
window = Tk()

mainMenu = Menu(window)
window.config(menu=mainMenu)

fileMenu = Menu(mainMenu)
mainMenu.add_cascade(label="파일", menu=fileMenu)
fileMenu.add_command(label="열기", command=func_open) # 선택시 command 작동. func_open 실행
fileMenu.add_separator()
fileMenu.add_command(label="종료", command=func_exit) # func_exit 실행

window.mainloop()

파일 - 열기 클릭 시 함수 호출

 

from tkinter import *
from tkinter.simpledialog import *  # tkinter.simpledialog 사용

# 함수 정의 부분
window = Tk()
window.title("본체 창")    # window 변수의 창 이름을 "본체 창"으로 설정
window.geometry("400x100")

label1 = Label(window, text="라벨1의 다이얼로그 입력전 값") # label1의 텍스트를 입력
label1.pack()

value = askinteger("askinteger 창", "!!!!!!!!주사위 숫자(1~6)을 입력하세요!!!!!!!!", minvalue=1, maxvalue=6)
# 변수 value에 askinteger로 숫자를 입력받는 다이얼로그 설정(창제목, 창내용, 최소값, 최대값)

label1.configure(text=str(value))   # label1의 텍스트를 변경(텍스트값은 문자화(value변수로 입력받은 값)

window.mainloop()

숫자를 넣고 ok를 누르면 "본체 창" 라벨1의 텍스트가 변경 됨

 

from tkinter import *
from tkinter.simpledialog import *

# 함수 정의 부분
window = Tk()

canvas = Canvas(window, height=300, width=300) # 변수 canvas에 캔버스를 윈도창에 부착. 300x300크기)
canvas.pack()

canvas.create_line([[0,0], [90,65], [150,20]], fill="pink", width=4)    # .create_line 선을 그림. 핑크색으로 두깨는 4
canvas.create_polygon([[100,100], [100,150], [150,150], [150,100]], fill="orange")  # .create_polygon 면을 그림. 오랜지색으로
canvas.create_text([200, 200], text="캔버스에 텍스트 쓰기", font=("굴림", 15)) # .create_text 글자를 적음. 굴림체 15폰트로

window.mainloop()

 

(PYTHON)파이썬 전체보기

 

'(PYTHON)파이썬' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

(PYTHON)파이썬 tkinter 윈도우 프로그램 - 창 띄우기, 라벨, 버튼, 에디트박스, 리스트박스

from tkinter import *	# tkinter 임포트

윈도우 = Tk()	# 윈도우 변수에 Tk() 셋

# 이 부분에서 화면을 구성하고 처리

윈도우.mainloop()	#윈도우 변수의 .mainloop() 호출해서 창띄우기

 

from tkinter import *

window = Tk()
window.title("윈도창 연습")	# 윈도우창 이름
window.geometry("400x100")	#크기 가로x세로
window.resizable(width=FALSE, height=FALSE)	#리사이즈 가로세로 금지

window.mainloop()

 

from tkinter import *
window = Tk()

라벨1 = Label(window, text="라벨텍스트1")	# 라벨1 변수에 Label() 생성. window 변수에 텍스트표현.
라벨2 = Label(window, text="라벨텍스트2", font=("궁서체", 30), fg="blue")	# 폰트 궁서체 30크기. 글자색 블루.
라벨3 = Label(window, text="라벨텍스트3", bg="magenta", width=20, height=5, anchor=SE)	# 백그라운드 마젠타. anchor 사우스이스트(남동)

라벨1.pack()	# 라벨1을 표현
라벨2.pack()
라벨3.pack()

window.mainloop()

 

from tkinter import *
from tkinter import messagebox	# 메세지박스 추가

def clickButton() :	#함수 선언 clickButton()
    messagebox.showinfo('메세지박스 제목', '메세지박스 내용입니다.')	# 함수호출시 메세지박스 보여주기(박스제목, 박스내용)

window = Tk()
window.geometry("200x200")

버튼1 = Button(window, text="요기 눌러요", fg="red", bg="yellow", command=clickButton)	#버튼1 변수에 버튼 생성. 커맨드(클릭시)=clickButton 함수 호출
버튼1.pack(expand = 1)	#버튼1.채워넣기(확장두께=1)

window.mainloop()

 

from tkinter import *
window = Tk()   #window 변수에 창띄우는 함수 Tk() 설정
window.geometry("400x100")	#크기 가로x세로

버튼1 = Button(window, text="버튼1")    # 버튼1 변수에 버튼 설정(윈도우변수에, 텍스트 넣어서)
버튼2 = Button(window, text="버튼2")
버튼3 = Button(window, text="버튼3")

버튼1.pack(side=LEFT) #버튼.채워넣기(왼쪽에)
버튼2.pack(side=LEFT)
버튼3.pack(side=RIGHT)  # 오른쪽정렬. 채워넣을때 정렬 pack(side=위치)

window.mainloop()

 

from tkinter import *
window = Tk()
window.geometry("400x100")	#크기 가로x세로

btnList = [None] * 3    # btnList 빈리스트 3개 공간 생성

for i in range(0,3) :   # 변수 i는 0~2까지 실행
    btnList[i] = Button(window, text="버튼"+str(i+1))	# i는 0,1,2로 돌지만 버튼 텍스트는 +1 해서 1,2,3으로 쓰여짐

for btn in btnList :    # 변수btn에 btnList[0,1,2] 설정
    btn.pack(side=RIGHT)

window.mainloop()

 

from tkinter import *

window = Tk()
window.geometry("200x200")

upFrame = Frame(window) #프레임 upFrame 변수에 셋
upFrame.pack()  # 채워넣기

downFrame = Frame(window)   #프레인 downFrame 변수에 셋
downFrame.pack()    # 채워넣기

editBox = Entry(upFrame, width = 10, bg = 'pink')   #editBox변수에 한줄텍스트박스 Entry설정(upFrame을, 가로10, 배경색핑크로)
editBox.pack(padx = 10, pady = 10)  # 채워넣기(여백)

listbox = Listbox(downFrame, bg = 'orange') # listbox변수에 Listbox설정(downFrame에, 배경색 오렌지로)
listbox.pack()  # 채워넣기

listbox.insert(END, "인서트텍스트1")  # listbox에 값입력
listbox.insert(END, "인서트텍스트2")

window.mainloop()

 

Tkinter 위젯

위젯명 설명
Button 단순한 버튼.
Label 텍스트 혹은 이미지 표시.
CheckButton 체크박스.
Entry 단순한 한 라인 텍스트 박스.
ListBox 리스트 박스.
RadioButton 옵션버튼.
Message Label과 비슷하게 텍스트 표시하지만,
Label과 다르게 자동 래핑 기능이 있음.
Scale 슬라이스 바.
Scrollbar 스크롤 바.
Text 멀티라인 텍스트박스로서 일부 Rich Text 기능 제공.
Menu 메뉴 Pane.
Menubutton 메뉴 버튼.
Toplevel 새 윈도우를 생성할 때 사용.
Tk()는 윈도우를 자동으로 생성하지만 추가로 새 윈도우 혹은 다이얼 로그를 만들 경우 Toplevel을 사용.
Frame 컨테이너 위젯. 다른 위젯들을 그룹화할 때 사용.
Canvas 그래프와 점들로 그림을 그릴 수 있으며, 커스텀 위젯을 만드는데 사용될 수 있음

 

(PYTHON)파이썬 전체보기

 

'(PYTHON)파이썬' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

[MariaDB] 마리아DB PHP - PHP와 MariaDB를 이용한 이용자 관리 시스템 (MySQL)

 

이용자 관리 시스템 초기화면 (HTML)

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 이용자 관리 시스템 </h1>

<a href='select.php'> (1) 이용자 조회 (조회 후 수정/삭제 가능) </a> <br><br>	<!-- 이용자조회 페이지 링크 -->
<a href='insert.php'> (2) 신규 이용자 등록 </a> <br><br>	<!-- 이용자 추가 페이지 링크 -->
<FORM METHOD="get"  ACTION="update.php">	<!-- 이용자 수정시 get방식으로 update.php 페이지로 전송 -->
	(3) 이용자 수정 - 이용자 아이디 : <INPUT TYPE ="text" NAME="userID"> 	<!-- userID 값을 넘겨줌 -->
	<INPUT TYPE="submit"  VALUE="수정">	<!-- update.php로 보내는 전송버튼 -->
</FORM>
<FORM METHOD="get"  ACTION="delete.php">	<!-- 이용자 삭제시 -->
	(4) 이용자 삭제 - 이용자 아이디 : <INPUT TYPE ="text" NAME="userID"> 
	<INPUT TYPE="submit"  VALUE="삭제">
</FORM>

</BODY>
</HTML>

 

(1) 이용자조회 화면 (select.php)

<?php
   $con=mysqli_connect("localhost", "root", "1234", "phpDB") or die("MariaDB 접속 실패 !!");

   $sql ="SELECT * FROM userTbl";	// 변수 $sql에 select 문을 입력
 
   $ret = mysqli_query($con, $sql);   // 변수 $ret에 mysqli_query 내장함수 입력 (접속변수, 셀렉트변수)
   if($ret) {	
	   $count = mysqli_num_rows($ret);	// 정상 실행 시 변수 $count에 행수를 입력
   }
   else {
	   echo "userTbl 데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   exit();
   } 
   
   echo "<h1> 이용자 조회 결과 </h1>";
   echo "<TABLE border=1>";
   echo "<TR>";
   echo "<TH>아이디</TH><TH>이름</TH><TH>출생년도</TH><TH>지역</TH><TH>국번</TH>";
   echo "<TH>전화번호</TH><TH></TH><TH>가입일</TH><TH>수정</TH><TH>삭제</TH>";
   echo "</TR>";
   
   while($row = mysqli_fetch_array($ret)) {	// 한행씩 가져오는 내장함수. 행이 끝나면 false가 됨
	  echo "<TR>";
	  echo "<TD>", $row['userID'], "</TD>";
	  echo "<TD>", $row['name'], "</TD>";
	  echo "<TD>", $row['birthYear'], "</TD>";
	  echo "<TD>", $row['addr'], "</TD>";
	  echo "<TD>", $row['mobile1'], "</TD>";
	  echo "<TD>", $row['mobile2'], "</TD>";
	  echo "<TD>", $row['height'], "</TD>";
	  echo "<TD>", $row['mDate'], "</TD>";
	  echo "<TD>", "<a href='update.php?userID=", $row['userID'], "'>수정</a></TD>";	// 수정 클릭 시 update.php로 userid값을 넘겨줌
	  echo "<TD>", "<a href='delete.php?userID=", $row['userID'], "'>삭제</a></TD>";	// 삭제 클릭 시 delete.php로 userid값을 넘겨줌
	  echo "</TR>";	  
   }   
   mysqli_close($con);
   echo "</TABLE>"; 
   echo "<br> <a href='main.html'> <--초기 화면</a> ";
?>

 

(2) 신규 이용자 등록 (insert.php)

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 신규 이용자 입력 </h1>
<FORM METHOD="post"  ACTION="insert_result.php">	// post방식으로 insert_result.php로 자료 전송
	아이디 : <INPUT TYPE ="text" NAME="userID"> <br>
	이름 : <INPUT TYPE ="text" NAME="name"> <br> 
	출생년도 : <INPUT TYPE ="text" NAME="birthYear"> <br>
	지역 : <INPUT TYPE ="text" NAME="addr"> <br>
	휴대폰 국번 : <INPUT TYPE ="text" NAME="mobile1"> <br>
	휴대폰 전화번호 : <INPUT TYPE ="text" NAME="mobile2"> <br>
	신장 : <INPUT TYPE ="text" NAME="height"><br>
	<BR><BR>
	<INPUT TYPE="submit"  VALUE="이용자 입력">
</FORM>

</BODY>
</HTML>

 

이용자 입력 클릭 시 받아주는 insert_result.php

<?php
   $con=mysqli_connect("localhost", "root", "1234", "sqlDB") or die("MySQL 접속 실패 !!");

   $userID = $_POST["userID"];
   $name = $_POST["name"];
   $birthYear = $_POST["birthYear"];
   $addr = $_POST["addr"];
   $mobile1 = $_POST["mobile1"];
   $mobile2 = $_POST["mobile2"];
   $height = $_POST["height"];   
   $mDate = date("Y-m-j");
   
   $sql =" INSERT INTO userTbl VALUES('".$userID."','".$name."',".$birthYear.",'".$addr."','".$mobile1."','".$mobile2."',".$height.",'".$mDate."')";
   // 데이터 인서트
   
   $ret = mysqli_query($con, $sql);
 
    echo "<h1> 신규 이용자 입력 결과 </h1>";
   if($ret) {
	   echo "데이터가 성공적으로 입력됨.";
   }
   else {
	   echo "데이터 입력 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   } 
   mysqli_close($con);
   
   echo "<br> <a href='main.html'> <--초기 화면</a> ";
?>

 

 

 

(3) 이용자 정보 수정 (update.php)

<?php
   $con=mysqli_connect("localhost", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");
   $sql ="SELECT * FROM userTbl WHERE userID='".$_GET['userID']."'";	// get방식으로 userID를 받아서 셀렉트

   $ret = mysqli_query($con, $sql);   
   if($ret) {
	   $count = mysqli_num_rows($ret);
	   if ($count==0) {
		   echo $_GET['userID']." 아이디의 이용자이 없음!!!"."<br>";
		   echo "<br> <a href='main.html'> <--초기 화면</a> ";
		   exit();	
	   }		   
   }
   else {
	   echo "데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   echo "<br> <a href='main.html'> <--초기 화면</a> ";
	   exit();
   }   
   $row = mysqli_fetch_array($ret);
   $userID = $row['userID'];
   $name = $row["name"];
   $birthYear = $row["birthYear"];
   $addr = $row["addr"];
   $mobile1 = $row["mobile1"];
   $mobile2 = $row["mobile2"];
   $height = $row["height"];   
   $mDate = $row["mDate"];      
?>

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 이용자 정보 수정 </h1>
<FORM METHOD="post"  ACTION="update_result.php">	// 수정한 값을 post 형식으로 update_resule.php 로 전송
	아이디 : <INPUT TYPE ="text" NAME="userID" VALUE=<?php echo $userID ?> READONLY> <br>	// 읽기만 가능하도록 값을 불러옴(READONLY)
	이름 : <INPUT TYPE ="text" NAME="name" VALUE=<?php echo $name ?>> <br> 
	출생년도 : <INPUT TYPE ="text" NAME="birthYear" VALUE=<?php echo $birthYear ?>> <br>
	지역 : <INPUT TYPE ="text" NAME="addr" VALUE=<?php echo $addr ?>> <br>
	휴대폰 국번 : <INPUT TYPE ="text" NAME="mobile1" VALUE=<?php echo $mobile1 ?>> <br>
	휴대폰 전화번호 : <INPUT TYPE ="text" NAME="mobile2" VALUE=<?php echo $mobile2 ?>> <br>
	신장 : <INPUT TYPE ="text" NAME="height" VALUE=<?php echo $height ?>> <br>
	이용자가입일 : <INPUT TYPE ="text" NAME="mDate" VALUE=<?php echo $mDate ?> READONLY><br>
	<BR><BR>
	<INPUT TYPE="submit"  VALUE="정보 수정">
</FORM>

</BODY>
</HTML>

 

이용자 입력 클릭 시 받아주는 update_result.php

<?php
   $con=mysqli_connect("localhost", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $userID = $_POST["userID"];
   $name = $_POST["name"];
   $birthYear = $_POST["birthYear"];
   $addr = $_POST["addr"];
   $mobile1 = $_POST["mobile1"];
   $mobile2 = $_POST["mobile2"];
   $height = $_POST["height"];   
   $mDate = $_POST["mDate"]; 
   
   $sql ="UPDATE userTbl SET name='".$name."', birthYear=".$birthYear", addr='".$addr."', mobile1='".$mobile1."',mobile2='".$mobile2"', height=".$height.", mDate='".$mDate."' WHERE userID='".$userID."'";
   // 변수로 입력받은 post값들을 update 함
   
   $ret = mysqli_query($con, $sql);
 
    echo "<h1> 회원 정보 수정 결과 </h1>";
   if($ret) {
	   echo "데이터가 성공적으로 수정됨.";
   }
   else {
	   echo "데이터 수정 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   } 
   mysqli_close($con);
   
   echo "<br> <a href='main.html'> <--초기 화면</a> ";
?>

 

 

(4) 이용자 정보 삭제 (delete.php)

<?php
   $con=mysqli_connect("localhost", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");
   $sql ="SELECT * FROM userTbl WHERE userID='".$_GET['userID']."'";	// get으로 전달 받은 userID로 셀렉트 하는 쿼리를 변수 $sql에 저장

   $ret = mysqli_query($con, $sql);   
   if($ret) {
	   $count = mysqli_num_rows($ret);
	   if ($count==0) {
		   echo $_GET['userID']." 아이디의 이용자이 없음!!!"."<br>";
		   echo "<br> <a href='main.html'> <--초기 화면</a> ";
		   exit();	
	   }		   
   }
   else {
	   echo "데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   echo "<br> <a href='main.html'> <--초기 화면</a> ";
	   exit();
   }   
   $row = mysqli_fetch_array($ret);	// 변수 $row에 한행씩 입력
   $userID = $row['userID'];
   $name = $row["name"];
   
?>

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>

<h1> 이용자 삭제 </h1>
<FORM METHOD="post"  ACTION="delete_result.php">	// post 형식으로 delete_result.php로 전송
	아이디 : <INPUT TYPE ="text" NAME="userID" VALUE=<?php echo $userID ?> READONLY> <br>
	이름 : <INPUT TYPE ="text" NAME="name" VALUE=<?php echo $name ?> READONLY> <br> 
	<BR><BR>
	위 이용자을 삭제하겠습니까?	
	<INPUT TYPE="submit"  VALUE="이용자 삭제">
</FORM>

</BODY>
</HTML>

 

이용자 삭제 클릭 시 받아주는 delete_result.php

<?php
   $con=mysqli_connect("localhost", "root", "1234", "sqlDB") or die("MariaDB 접속 실패 !!");

   $userID = $_POST["userID"];
     
   $sql ="DELETE FROM userTbl WHERE userID='".$userID."'";	// delete 쿼리를 변수에 담음
   
   $ret = mysqli_query($con, $sql);
 
    echo "<h1> 이용자 삭제 결과 </h1>";
   if($ret) {
	   echo $userID." 이용자이 성공적으로 삭제됨..";
   }
   else {
	   echo "데이터 삭제 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   } 
   mysqli_close($con);
   
   echo "<br><br> <a href='main.html'> <--초기 화면</a> ";
?>

 

 

[MariaDB] 전체보기

 

'MariaDB' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형
반응형

[MariaDB] 마리아DB PHP - PHP와 MariaDB 연계 (MySQL)

 

DB접속

먼저 이전 포스팅에서 설명드린 아파치를 실행해야 합니다.

reddb.tistory.com/130?category=925278

 

[MariaDB] 마리아DB PHP - XAMPP 설치하기 (MySQL)

[MariaDB] 마리아DB PHP - XAMPP 설치하기 (MySQL) PHP사용을 위해서는 아파치와 PHP 설치가 필요합니다. 이번 포스팅에서는 윈도우에서 PHP와 아파치를 사용할 수 있게 해주는 XAMPP에 대한 설치방법을

reddb.tistory.com

 

아래 코드로 만들어진 connect.php파일을 C:\xampp\htdocs 에 저장합니다.

DB서버가 따로 존재한다면 해당 서버의 IP를 변수 $db_host="IP"로 넣어주시면 됩니다.

같은 서버에서 아파치와 PHP, DB를 모두 사용하신다면 "localhost"로 넣어주시면 됩니다.

<?php
   $db_host="DB가 있는 서버 주소";	//DB서버 주소를 입력
   $db_user="root";	//접속할 ID
   $db_password="1234";	// 접속할 ID의 패스워드
   $db_name="";	// 특별히 사용할 DB가 있다면 DB명을 넣음
   $con=mysqli_connect($db_host, $db_user, $db_password, $db_name);	// 변수 $con에 db접속 내장함수와 (인자값 들)을 저장
   if ( mysqli_connect_error($con) ) {	// DB접속 했을 때 오류가 발생한다면
	   echo "MariaDB 접속 실패 !!", "<br>";	// 출력
	   echo "오류 원인 : ", mysqli_connect_error();	// mysqli_connet_error() 내장함수는 DB서버 연결 오류 원인을 반환해주는 함수
	   exit();
   }
   echo "MariaDB 접속 완전히 성공!!";	// 에러가 없을 시 출력
   mysqli_close($con);	// DB 접속 종료
?>

 

브라우저를 열어 주소창에 localhost/connect.php 를 입력해서 아래와 같은 문자가 나오면 DB에 정상 접속된 것입니다.

 

이후 부터는 위에서 길게 설정한 접속 변수 내용을 아래와 같이 간결하게 접속하도록 하겠습니다.

$con=mysqli_connect("localhost", "root", "1234", "") or die("MariaDB 접속 실패 !!");

 

 

데이터베이스 생성

createdb.php 파일을 만들고 아래의 내용을 입력 후 C:\xampp\htdocs 에 저장합니다.

<?php
   $con=mysqli_connect("localhost", "root", "1234", "") or die("MariaDB 접속 실패 !!");
         
   $sql="CREATE DATABASE phpDB";	// 변수$sql에 phpDB 생성 쿼리 입력
   $ret = mysqli_query($con, $sql);	// 변수$ret에 쿼리 실행 내장함수로 ($con, $sql) 실행
   
   if($ret) {	// mysqli_query가 성공적으로 실행되면 Ture 값이 반환됨
	   echo "sqlDB가 성공적으로 생성됨.";
   }
   else {
	   echo "sqlDB 생성 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   }
   
   mysqli_close($con);
?>

 

브라우저에서 해당 파일을 열어 봅니다.

 

성공적으로 생성됐다는 메시지가 나오면 DB에 붙어 정상적으로 만들어졌는지도 확인합니다.

 

 

테이블 생성

createtable.php 파일을 만들고 아래의 내용을 입력 후 C:\xampp\htdocs 에 저장합니다.

<?php
   $con=mysqli_connect("localhost", "root", "1234", "phpDB") or die("MariaDB 접속 실패 !!");
                      // DB IP    ,  ID   ,  PW   , 사용할DB명

   // 변수 $sql에 테이블 생성 쿼리를 입력
   $sql ="	
	   CREATE TABLE userTbl 
		( userID  	CHAR(8) NOT NULL PRIMARY KEY,
		  name    	VARCHAR(10) NOT NULL,
		  birthYear   INT NOT NULL,
		  addr	  	CHAR(2) NOT NULL,
		  mobile1	CHAR(3),
		  mobile2	CHAR(8),
		  height    	SMALLINT,
		  mDate    	DATE
		)
   ";
 
   $ret = mysqli_query($con, $sql);	// 접속쿼리와 DB생성쿼리를 서버에서 실행하는 내장함수 mysqli_query()를 변수 $ret 쿼리에 입력
        //mysqli_query는 성공시 True 값을 반환함
 
   if($ret) {	// 변수 $ret이 문제 없이 실행됐다면
	   echo "userTBL이 성공적으로 생성됨..";
   }
   else {
	   echo "userTBL 생성 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   }
 
   mysqli_close($con);	// DB접속 종료
?>

 

브라우저에서 해당 파일을 열어봅니다.

 

테이블이 성공적으로 생성됐다는 내용이 나오면 DB에 접속해서 테이블을 확인해 봅니다.

 

 

데이터 입력

insertdata.php 파일을 만들고 아래의 내용을 입력 후 C:\xampp\htdocs 에 저장합니다.

<?php
   $con=mysqli_connect("localhost", "root", "1234", "phpDB") or die("MariaDB 접속 실패 !!");

   // 변수 $sql에 인서트 데이터를 입력. 아래 mysqli_query 내장함수는 하나의 SQL문만 실행하므로 여러건의 데이터를 넣기 위해 , 를 사용
   $sql ="	
		INSERT INTO userTbl VALUES
		('AAA', '김에이', 1987, '서울', '011', '1111111', 182, '2008-8-8'),
		('BBB', '박비이', 1979, '경기', '011', '2222222', 173, '2012-4-4'),
		('CCC', '조씨이', 1971, '부사', '019', '3333333', 177, '2007-7-7'),
		('DDD', '성디이', 1950, '서울', '011', '4444444', 166, '2009-4-4'),
		('EEE', '임이이', 1979, '광주', NULL  , NULL      , 186, '2013-12-12'),
		('FFF', '윤에프', 1963, '서울', '016', '6666666', 182, '2009-9-9'),
		('GGG', '은지지', 1969, '경북', NULL  , NULL      , 170, '2005-5-5'),
		('HHH', '한흐흐', 1972, '경남', '011', '8888888', 174, '2014-3-3'),
		('III', '이이이', 1965, '전남', '018', '9999999', 172, '2010-10-10'),
		('JJJ', '장지지', 1973, '서울', '010', '0000000', 176, '2013-5-5')
   ";
 
   $ret = mysqli_query($con, $sql);	
 
   if($ret) {
	   echo "userTBL이 데이터가 성공적으로 입력됨.";
   }
   else {
	   echo "userTBL 데이터 입력 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
   }
 
   mysqli_close($con);
?>

 

브라우저에서 해당 파일을 열어봅니다.

 

성공적으로 입력됐다는 내용이 나오면 DB에 접속해서 테이블의 DATA를 확인해 봅니다.

 

 

데이터 조회

select.php 파일을 만들고 아래의 내용을 입력 후 C:\xampp\htdocs 에 저장합니다.

<?php
   $con=mysqli_connect("localhost", "root", "1234", "phpDB") or die("MariaDB 접속 실패 !!");

   $sql ="
		SELECT * FROM userTbl
   ";
 
   $ret = mysqli_query($con, $sql);
 
   if($ret) {
	   echo mysqli_num_rows($ret), "건이 조회됨.<br><br>";	// mysqli_num_rows() 내장함수는 SELECT 문의 결과가 몇 개의 행인지를 반환
   }
   else {
	   echo "userTBL 데이터 조회 실패!!!"."<br>";
	   echo "실패 원인 :".mysqli_error($con);
	   exit();
   }
   
   while($row = mysqli_fetch_array($ret)) {	// mysqli_fetch_array() 내장함수는 SELECT 문의 실행 결과에서 한행씩 결과 행을 추출함. 더이상 접근할 결과 행이 없을때 Fasle 값을 반환함.
	   echo $row['userID'], " ", $row['name'], " ", $row['height'], " ", "<br>";
   }   
 
   mysqli_close($con);
?>

 

브라우저에서 해당 파일을 열어봅니다.

 

 

[MariaDB] 전체보기

 

'MariaDB' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형