반응형

[MariaDB] 마리아DB Node.js - 노드.js MariaDB 연계 (MySQL)

 

Node.js에서 마리아DB에 연결을 하기 위해서는 npm을 통해 mysql을 설치해야 합니다.

npm install --save mysql

 

--save 옵션을 주게 되면 pakage.json 파일에 dependencies에 자동 등록이 됩니다.

 

pakage.json 파일의 dependencies에 등록이 되면 좋은 점이  있습니다.

차후 소스파일이 이동 됐을때 npm install 명령을 다시 하게 될텐데 그때 dependencies에 있는 항목들이 자동 설치됩니다.

 

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

  1. MariaDB 연결 모듈 할당: 모듈할당용변수 = require('mysql);
  2. 커넥션객체 할당: 커넥션변수 = 모듈할당용변수.createConnection({host:'IP', user:'계정명', password:'비번', database:'DB명'})
  3. 마리아DB 연결 : 커넥션변수.connect();
  4. SQL문 실행: 커넥션변수.query('SQL문장', 콜백함수(에러받는변수, 접속결과받는변수, fields){ 콜백함수 실행내용 });
  5. MariaDB 연결종료: 커넥션변수.close()

 

opentutorials DB명에 붙어서 topic 테이블을 조회하는 소스

var mysql = require('mysql'); // mysql 변수에 mysql 모듈을 할당
var connection = mysql. createConnection({  //커넥션변수에 mysql변수에 있는 크리에이드커넥션 메소드를 호출(객체를 받음) 할당
    host    : 'localhost',   //host객체 - 마리아DB가 존재하는 서버의 주소
    user    : 'root', //user객체 - 마리아DB의 계정
    password    : 'password',   //password객체 - 마리아DB 계정의 비밀번호
    database    : 'opentutorials'   //database객체 - 접속 후 사용할 DB명
});

connection.connect();   // (위에 선언한 객체들을 가진)커넥션변수의 connect() 메소드를 호출하면 DB에 접속이 됨

connection.query('SELECT * FROM topic', function(error, results, fields){
// 커넥션.query 메소드를 호출해서(첫번째인자는 SQL문을주고, 두번째 인자로 콜백함수를 줌). 
// 첫번째 인자 쿼리가 실행되고 나서 두번째 콜백함수가 실행됨(에러가발생했으면error에 할당, 접속결과는 results에 할당)
    if (error) {
        console.log(error);
    } //에러에 값이 있다면 에러값을 콘솔에 출력
    console.log(results);
});

connection.end();

 

위 소스로 만든 mysql.js파일을 node로 실행시켜보면 topic 테이블의 내용이 객체 형태로 반환됩니다.

node.js를 이용한 마리아DB 테이블 내용 셀렉트 출력

 

DB접속정보를 db.js파일로 만들고 main.js 파일에서 모듈로 불러 들여서 쿼리로 사용 할 수도 있습니다.

먼저 db.js파일을 만듭니다.

var mysql = require('mysql'); // mysql 변수에 mysql 모듈을 할당

var db = mysql. createConnection({  //db변수에 mysql변수에 있는 크리에이드커넥션 메소드를 호출(객체를 받음) 할당
    host    : 'localhost',   //host객체 - 마리아DB가 존재하는 서버의 주소
    user    : 'root', //user객체 - 마리아DB의 계정
    password    : 'password',   //password객체 - 마리아DB 계정의 비밀번호
    database    : 'opentutorials'   //database객체 - 접속 후 사용할 DB명
});
// db.connet();

module.exports = db;

 

다음은 main.js에서 require('./db.js')로 접속정보를 가져와 변수에 집어 넣습니다.

이후 변수명.query('쿼리내용', function(에러시값받는변수, 성공시값받는변수)로 쿼리내용을 객체로 변수에 받습니다.

var db = require('./db.js'); // 현재폴더에 있는 db.js 파일 모듈로 가져오기(DB접속 정보가 있음) 
var http = require('http'); // 모듈 사용하기 - 변수 = require('사용할모듈명')

var app = http.createServer(function(request,response){

db.query(`SELECT * FROM topic`, function(error, result){
    // 커넥션.query 메소드를 호출해서(첫번째인자는 SQL문을주고, 두번째 인자로 콜백함수를 줌). 
    // 첫번째 인자 쿼리가 실행되고 나서 두번째 콜백함수가 실행됨(에러가발생했으면 임의변수 error에 에러값 할당, 접속결과 성공시 결과값 임의변수 topics에 할당)
    console.log(result)
    var html =   // 변수 html에 아래 html 코드를 입력
    `
    <!doctype html>
      <html>
      <head>
        <title>nodejs - mysql </title>
        <meta charset="utf-8">
      </head>
      <body>
        nodejs - mysql
      </body>
      </html>
    `
    
    response.writeHead(200);  // 응답: 상태 성공(200) 
    response.end(html); // 웹에 띄워줄 내용 (html변수)
});

})

app.listen(8088); // http.createServer()가 할당된 변수 app를 8088로 오픈

 

nodejs로 main.js를 실행시키면 웹서비스가 실행됩니다. ($ node main.js)

브라우저로 서버의 8088포트로 접속해 봅니다.

 

이제 위에 html변수 안에 들어가는 html코드 내용에 result 변수로 받은 sql객채들을 꺼내서 표현해 봅니다.

var db = require('./lib/db.js'); // 현재폴더에 있는 db.js 파일 모듈로 가져오기(DB접속 정보가 있음) 
var http = require('http'); // 모듈 사용하기 - 변수 = require('사용할모듈명')

var app = http.createServer(function(request,response){

db.query(`SELECT * FROM topic`, function(error, result){
    // 커넥션.query 메소드를 호출해서(첫번째인자는 SQL문을주고, 두번째 인자로 콜백함수를 줌). 
    // 첫번째 인자 쿼리가 실행되고 나서 두번째 콜백함수가 실행됨(에러가발생했으면 임의변수 error에 에러값 할당, 접속결과 성공시 결과값 임의변수 topics에 할당)
    console.log(result)
    var html =   // 변수 html에 아래 html 코드를 입력
    `
    <!doctype html>
      <html>
      <head>
        <title>nodejs - mysql </title>
        <meta charset="utf-8">
      </head>
      <body>
        <p>${result[0].id} / ${result[0].title} / ${result[0].description} </p>
        <p>${result[1].id} / ${result[1].title} / ${result[1].description} </p>
        <p>${result[2].id} / ${result[2].title} / ${result[2].description} </p>
      </body>
      </html>
    `
    
    response.writeHead(200);  // 응답: 상태 성공(200) 
    response.end(html); // 웹에 띄워줄 내용 (html변수)
});

})

app.listen(8088); // http.createServer()가 할당된 변수 app를 8082로 오픈

 

컨트롤 + C로 노드를 종료하고, nodejs로 main.js를 재실행시킵니다. ($ node main.js)

브라우저로 서버의 8088포트로 접속해 봅니다.

쿼리로 조회된 값을 객체로 받은 result 변수의 값들이 출력됩니다.

 

 

위와 같은 방식으로 쿼리내용에 업데이트, 인서트, 딜리트 sql문을 넣을 수도 있습니다.

db.query('쿼리내용', function(에러값, 결과값){ 실행내용 });

// 업데이트 예시
var name = '이름'
var profile = '프로필'
var id = '1234';

db.query(`
    UPDATE topic SET name=?, profile=? WHERE id=?`, // DB topic 테이블에 UPDATE하기. ?로 선한한 부분은 (,)뒤에 []로 표현된 값이 입력됨
    [name, profile, id],  // 윗줄 ?인 name에 '이름' 넣고, profile에 '프로필' 넣고, id에 '1234' 넣기
    function(error, result){	// 쿼리문 실행 후 변수에 값을 받음. 에러시 error변수에, 성공시 result변수에 값을 받고 {} 안에 내용 실행
    if(error){	// error 변수에 값이 존재할 경우
        throw error;	//빠저나가기
    }
    response.writeHead(302, {Location: `/`}); // 응답: 리다이렉션(302). 주소는 /
    response.end();
}
// 인서트 예시
var name = '이름'
var profile = '프로필'

db.query(`
    INSERT INTO topic (name, profile) VALUES(?, ?)`, // DB topic 테이블에 인서트 인투(name, profile)
    [name, profile],  // name에 '이름' 넣고, profile에 '프로필'넣기
    function(error, result){	// 쿼리문 실행 후 변수에 값을 받음. 에러시 error변수에, 성공시 result변수에 값을 받고 {} 안에 내용 실행
    if(error){
        throw error;
    }
    response.writeHead(302, {Location: `/`}); // 응답: 리다이렉션(302). 주소는 /
    response.end();
    }
)
// 딜리트 예시
var id = '1234'

db.query(`
    DELETE FROM topic WHERE id=?`, // DB topic 테이블에서 id가 아래줄에 선언한 id와 같은 값 지우기
    [id],  // id에 '1234' 넣기
    function(error, result){	// 쿼리문 실행 후 변수에 값을 받음. 에러시 error변수에, 성공시 result변수에 값을 받고 {} 안에 내용 실행
        if(error){
        throw error;
        }
        response.writeHead(302, {Location: `/`}); // 응답: 리다이렉션(302). 주소는 /
        response.end();
    }
)

 

 

[MariaDB] 전체보기

 

'MariaDB' 카테고리의 글 목록

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

reddb.tistory.com

 

반응형
반응형

[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

반응형
반응형

[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

반응형
반응형

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

 

HTML과 PHP 데이터 전송

send.html 파일을 아래 코드를 넣어 만듭니다.

폼태그를 이용하여 아이디와 이름을 입력 받은 후 receive.php로 get 방식으로 전송하는 코드입니다.

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

<FORM METHOD="post"  ACTION="receive.php">
	아이디 : <INPUT TYPE ="text" NAME="userID">
	이름 : <INPUT TYPE ="text" NAME="userName">
	<BR><BR>
	<INPUT TYPE="submit"  VALUE="전송">
</FORM>

</BODY>
</HTML>

 

receive.php 파일은 아래 소스코드를 넣어 만듭니다.

send.html 파일에서 보낸 INPUT 태그로 받은 값들을 변수에 넣어 출력합니다.

<?php
	$userID = $_POST["userID"];	// INPUT 테그의 NAME이 "usreID"인 값을 변수 $userID에 입력
	$userName = $_POST["userName"];	// INPUT 테그의 NAME이 "usreName"인 값을 변수 $userName에 입력
	// get방식으로 넘어오면 $_GET으로, post방식으로 넘어오면 $_POST로 받는다
    
	echo "전달 받은 아이디 : ", $userID, "<br>";	// 변수 $userID 출력
	echo "전달 받은 이름 : ",$userName, "<br>";	// 변수 $userName 출력
 ?>

 

POST와 GET의 전달 방식은 결과는 동일합니다.

차이점이라면 POST방식의 결과값은 주소창에 localhost/receive.php 까지만 노출됩니다.

하지만 GET방식의 결과값은 주소창에 localhost/receive.php?변수=값&변수=값 이런 방식으로 값이 전달됩니다.(값이 한글일 경우 다른코드로 변환하여 표현)

GET 방식은 전달되는 데이터가 노출되기 때문에 노출되어도 문제 없는 값들로 이루어진 경우에만 사용해야 합니다.. 중요 정보값이 있다면 POST를 사용해야 합니다.

 

 

HTML과 PHP 함께 사용

HTML 문법으로만 구성된 파일의 확장자명을 .php로 저장해서 사용해도 무관합니다.

HTML 문법과 PHP문법이 함께 사용된 파일은 .php파일로 저장해서 사용합니다.

<?php
   $num1 = 100;
   $num2 = 200;   
   $sum = $num1 + $num2;
?>

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

<h1> 계산 결과는 <?php echo $sum ?> 입니다. </h1>

</BODY>
</HTML>

위의 결과 HTML의 h1태그로 php의 변수 $sum 값인 300이 정상 출력됩니다.

 

 

[MariaDB] 전체보기

 

'MariaDB' 카테고리의 글 목록

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

reddb.tistory.com

반응형