관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[PHP] PHP DB관련 코드 정리 본문

웹/PHP

[PHP] PHP DB관련 코드 정리

막무가내막내 2019. 8. 23. 20:48
728x90

 

[2021-05-26 업데이트]

PC 버전에서 코드가 인식이 안되어 검은색화면만 뜨고 코드가 안보이는 에러가 있네요.

코드를 확인하시려면

https://youngest-programming.tistory.com/m/112 모바일 버전으로 확인해주시길 바랍니다. :)

 

[PHP] PHP DB관련 코드 정리

php 함수 설명 1. mysqli_query() => 다른 형식의 SQL 구문, INSERT, UPDATE, DELETE, DROP 등에서 성공하면 TRUE를, 실패하면 FALSE를 반환합니다. 2. mysqli_connect() => php에서 MySQL 을 연결해주는 함 3...

youngest-programming.tistory.com

 

 

php 함수 설명

1. mysqli_query() => 다른 형식의 SQL 구문, INSERT, UPDATE, DELETE, DROP 등에서 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.

 

2. mysqli_connect() =php에서 MySQL 을 연결해주는 함

 

3. mysqli_close() =>  mysqli_connect 함수를 통해 연결한 객체의 연결을 해제하는데 사용하는 함수

 

4. mysqli_fetch_assoc => mysqli_query 를 통해 얻은 리절트 셋(result set)에서 레코드를 1개씩 리턴해주는 함수입니다.

 레코드를 1개씩 리턴해주는 것은 mysqli_fetch_row 와 동일하지만 mysqli_fetch_assoc 함수가 리턴하는 값은 연관배열이라는 점이 틀립니다. 연관배열이기 때문에 인덱스 번호가 아닌 아이디값으로(컬럼명) 값을 불러올 수 있다. 

즉 필드명이나 쿼리문에 사용된 alias로 배열을 참조 할 수 있다.

참고: https://m.blog.naver.com/PostView.nhn?blogId=diceworld&logNo=220295777271&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

+) mysqli_fetch_row().
값을 꺼내오는데 [index] 숫자값을 사용한다.

 

+) mysqli_fetch_array()

=> 위의 둘을 합쳐논거라고 생각, 인덱스번호 별칭으로 둘다 값을 찾는데 이용할 수 있다. 그러나 이것은 그만큼 느리고 비효율적이라고 스택오버플로우에서는 이 함수를 머릿속에 지우라고한다.

 

5. array_push() => 배열의 끝에 하나 이상의 요소를 삽입

예제 및 참고 : https://www.w3schools.com/php/func_array_push.asp 

 

5. require_once() => 해당 파일 불러옴(모듈화) 

 

6. json_encode() => json형식으로 인코딩

 

7. password_hash() => string password_hash ( string $password , integer $algo [, array $options ] ) , 3번쨰 매개변수는 생략가능. 

 

8. password_verify() => param1: 내가 확인할려는 비번  param2: 암호화된 비번   param2의 복호화된 비번과 param1의 비번이 같으면 true 아니면 false반환

                       

패스워드 암호화 두개의 사용법(출처: https://webinformation.tistory.com/82)

 

9. base64_decode() => 출처: https://www.geeksforgeeks.org/php-base64_decode-function/

 

 

10. mysqli_query() =>  출처 :https://www.w3schools.com/php/func_mysqli_query.asp  

연결된 디비에 쿼리실행하는 함수임 , mysqli_query([연결 객체][쿼리]);

mysqli_query()함수는 결과 값을 반환받아 해당 변수($result)에 데이터를 반환
하지만 insert, update와 같은 쿼리문은 실제 데이터를 반환하는것이 아니라 쿼리가 성공적으로 수행됬는지 참과 거짓여부만 반환

 

 


connect.php( 디비연결)



<?php
$conn = mysqli_connect("localhost", "유저아이디", "비번", "디비아이디"); //디비유저, 비번, 디비이름
?>

 

notes.php(SELECT * 문)

<?php
header("Content-type::application/json");

require_once('connect.php');

$query = mysqli_query($conn, "SELECT * FROM `notes`");

$response = array();

while($row = mysqli_fetch_assoc($query)){
    array_push($response,
    array(
        'id' => $row['id'],
        'title' => $row['title'],
        'note' => $row['note'],
        'color' => $row['color'],
        'date' => $row['date'])
        );
}

echo json_encode($response);
?>

 

 

save.php(INSERT문)

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    
    $title = $_POST['title'];
    $note = $_POST['note'];
    $color = $_POST['color'];
    
    require_once("connect.php");
    
    $query = "INSERT INTO `notes` (title, note, color) VALUES ('$title', '$note', '$color')";
    if(mysqli_query($conn, $query)){
        $response['success'] = true;
        $response['message'] = "Sucessfully";
    }
}else{
    $response['success'] = false;
    $response['message'] = "Error!";
}

echo json_encode($response);
?>

 

 

update.php(update문)

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $id = $_POST['id'];
    $title = $_POST['title'];
    $note = $_POST['note'];
    $color = $_POST['color'];
    
    require_once('connect.php');
    
    
    $query = "UPDATE `notes` SET title = '$title', note ='$note', color = '$color' WHERE id = '$id' ";
    
    if(mysqli_query($conn, $query)){
        $response['success'] = true;
        $response['message'] = "Successfully";
        
    }else{
        $response['success'] = false;
        $response['message'] = "Failure!";
    }
}else{
        $response['success'] = false;
        $response['message'] = "Error!";
}

echo json_encode($response);
?>

 

 

delete.php( DELETE문)

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $id = $_POST['id'];
    
    require_once('connect.php');
    
    
    $query = "DELETE FROM `notes` WHERE id = '$id' ";
    
    if(mysqli_query($conn, $query)){
        $response['success'] = true;
        $response['message'] = "Successfully";
        
    }else{
        $response['success'] = false;
        $response['message'] = "Failure!";
    }
}else{
        $response['success'] = false;
        $response['message'] = "Error!";
}

echo json_encode($response);
?>

 

 

register.php (INSERT문, 패스워드는 암호화)

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    
    $password = password_hash($password, PASSWORD_DEFAULT);
    
    require_once 'connect.php';
    
    $sql = "INSERT INTO users_table (name, email, password) VALUES ('$name', '$email', '$password')";
    if(mysqli_query($conn, $sql)){
        $result["success"] = "1";
        $result["message"] = "success";
        
        echo json_encode($result);
        mysqli_close($conn);
    }else{
        $result["success"] = "0";
        $result["message"] = "error";
        
        echo_json_encode($result);
        mysqli_close($conn);
    }
}

?>

 

 

 

 

login.php (SELECT문, 패스워드는 암호화했던거라 password_verify()로 복호화해서 비교)

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $email = $_POST['email'];
    $password = $_POST['password'];
    
    require_once 'connect.php';

    $sql = "SELECT * FROM users_table WHERE email = '$email' ";

    $response = mysqli_query($conn, $sql);

    $result = array();
    $result['login'] = array();

    if(mysqli_num_rows($response) === 1){
        $row = mysqli_fetch_assoc($response);

        if(password_verify($password, $row['password'])){
            $index['name'] = $row['name'];
            $index['email'] = $row['email'];
            $index['id'] = $row['id'];

            array_push($result['login'], $index);

            $result['success'] = "1";
            $result['message'] = "success";
            echo json_encode($result);

            mysqli_close($conn);
        }else{
            $result['success'] = "0";
            $result['message'] = "error";
            echo json_encode($result);

            mysqli_close($conn);
        }
    }
}
?>

 

 

 

read_detail.php (특정 아이디 SELECT)

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $id = $_POST['id'];
    
    require_once 'connect.php';

    $sql = "SELECT * FROM users_table WHERE id = '$id' ";

    $response = mysqli_query($conn, $sql);

    $result = array();
    $result['read'] = array();

    if(mysqli_num_rows($response) === 1){
        $row = mysqli_fetch_assoc($response);

        if($row = mysqli_fetch_assoc($response)){
            $h['name'] = $row['name'];
            $h['email'] = $row['email'];

            array_push($result['read'], $h);

            $result['success'] = "1";
            $result['message'] = "success";
            echo json_encode($result);

            mysqli_close($conn);
        }else{
            $result['success'] = "0";
            $result['message'] = "error";
            echo json_encode($result);

            mysqli_close($conn);
        }
    }
}
?>

 

 

 

 

edit_detail.php (UPDATE문)

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $email = $_POST['name'];
    $password = $_POST['email'];
    $id = $_POST['id'];
    
    require_once 'connect.php';

    $sql = "UPDATE users_table SET name='$name', email = '$email' WHERE id = '$id' ";
    
    if(mysqli_query($conn, $sql)){
        $result["success"] = "1";
        $result["message"] = "success";

        echo json_encode($result);
        mysqli_close($conn);
    }
}else{
    $result['success'] = "0";
    $result['message'] = "error";
    echo json_encode($result);
    mysqli_close($conn);    
}
?>

 

 

 

upload.php(이미지)

<?php

if($_SERVER['REQUEST_METHOD'] == "POST"){

	$id = $_POST['id'];
	$photo = $_POST['photo'];

	$path = "사진폴더/사진.jpeg";
	$finalPath = "path까지의 전체경로/" .$path;

	require_once 'connect.php';

	$sql = "UPDATE users_table SET photo ='$finalPath' WHERE id ='$id' ";

	if(mysqli_query($conn, $sql)){
		if(file_put_contents($path, base64_decode($photo))){
			$result["success"] = "1";
        	$result["message"] = "success";

       		echo json_encode($result);
       	 	mysqli_close($conn);
		}
	}
}
728x90
Comments