일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 막내의 막무가내
- 막내의막무가내 SQL
- 안드로이드
- 막내의막무가내
- 막내의막무가내 코틀린
- 막내의막무가내 알고리즘
- 2022년 6월 일상
- Fragment
- 막내의 막무가내 알고리즘
- 막내의막무가내 안드로이드
- 프로그래머스 알고리즘
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 rxjava
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 프로그래밍
- 부스트코스
- 막내의막무가내 플러터 flutter
- 프래그먼트
- 막내의막무가내 일상
- 주엽역 생활맥주
- 안드로이드 Sunflower 스터디
- flutter network call
- 부스트코스에이스
- 막내의막무가내 플러터
- 막내의막무가내 안드로이드 코틀린
- 막무가내
- 막내의막무가내 안드로이드 에러 해결
- 안드로이드 sunflower
- 막내의막무가내 목표 및 회고
- 주택가 잠실새내
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[PHP] PHP DB관련 코드 정리 본문
[2021-05-26 업데이트]
PC 버전에서 코드가 인식이 안되어 검은색화면만 뜨고 코드가 안보이는 에러가 있네요.
코드를 확인하시려면
https://youngest-programming.tistory.com/m/112 모바일 버전으로 확인해주시길 바랍니다. :)
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로 배열을 참조 할 수 있다.
+) 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);
}
}
}