PHP는 동적 대화형 사이트를 만드는 강력한 서버 사이드 스크립트 언어다.
데이터베이스(Database)는 데이터 구조에 맞게 데이터를 조직, 저장, 관리하는 창고다.각 데이터베이스는 저장된 데이터를 만들고, 액세스하고, 관리하고, 검색하고, 복사하는 하나 이상의 API를 가지고 있습니다.
MySQL은 웹에서 사용하고 서버에서 실행하는 데이터베이스 시스템입니다. MySQL은 매우 빠르고 안정적이며 사용하기 쉽고 표준 SQL을 지원합니다.
Mysql 문장
우리 wam을 열어줘pserver서버+Mysql 시각화 도구(여기에 Navicat을 사용함)나 다른 통합 도구(Apache+PHP+Mysql)도 가능합니다.서버에 연결하기
우리는 새로 조회를 해서 데이터베이스를 조작하는데, 먼저 기본적인 서류를 잘 배치한다.
메시지를 삽입하다
INSERT INTO 문법
1.데이터를 삽입할 열 이름을 지정해야 합니다. 삽입된 값만 제공하시면 됩니다.가
INSERT INTO table_name VALUES (value1,value2,value3,...);
2.열 이름과 삽입할 값을 지정해야 합니다
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
열 이름을 지정하지 않고 테이블에 데이터를 삽입합니다
INSERT INTO stu VALUES (null,'티모', 1,30);
우리는 제2종 문법으로 표에 데이터를 하나 삽입했다.
INSERT INTO stu (name, gender, age) VALUES ('Faker', 0,24);
문의문
SQL SELECT 문
SELECT column_name,column_name FROM table_name;
SELECT * FROM table_name;
검색 ID 열
select id from stu;
id가 1인 문장을 쿼리합니다
select * from stu where id = 1;
id가 유일하기 때문에 이 데이터를 찾으면 더 이상 계속할 필요가 없습니다
select * from stu where id = 1 limit 1;
SQL UPDATE 문장에 where 문장이 추가되어야 합니다. 그렇지 않으면 모든 테이블이 업데이트됩니다.
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
이름 수정 아이디가 1일 때
update stu set name='the shy' where id=1;
문장 삭제
SQL DELETE 문법 WHERE 절에서는 어떤 기록이나 어떤 기록을 삭제해야 하는지를 규정합니다.WHERE 절을 생략하면 모든 레코드가 삭제됩니다!
DELETE FROM table_name WHERE some_column=some_value;
아이디가 2인 이 학생 정보 삭제
delete from stu where id = 2;
PHP를 사용하여 작업Mysql
데이터베이스 링크 방법
header("Content-Type:text/html;charset=utf-8");
// 1. mysqli를 사용하여 데이터베이스 연결 (wampserver 기본 사용)
$connection = mysqli_connect('127.0.0.1', 'root', '', 'students');
// 2. 데이터베이스 파일을 인식하지 못하는 중국어 해결
mysqli_query($connection,"set names 'utf8';");
if (!$connection) {
// 데이터베이스에 연결할 수 없음
exit('<h1>데이터베이스에 연결할 수 없음</h1>');
}
// 한 번에 하나의 데이터만 조회할 수 있습니다
$query = mysqli_query($connection, 'select * from stu;');
// 모든 데이터 조회
while ($row = mysqli_fetch_assoc($query)) {
var_dump($row);
}
데이터베이스 렌더링 홈 페이지 쿼리(index.php)
1.믹서방법으로 헤더에 데이터베이스 링크
<?php
// 1.우리의 데이터베이스를 링크하다
$link = mysqli_connect('127.0.0.1', 'root', '', 'students');
// 2.중국어 인코딩 설정
mysqli_query($link,"set names 'utf8';");
// 3.검색 링크
if ($link->connect_error) {
die("연결 실패: " . $link->connect_error);
}
// 4.데이터를 조회하다
$query = mysqli_query($link, 'select * from stu;');
// 5.렌더링 데이터
?>
2.bootstrap@4 도입(bootstrap 홈페이지 다운로드 및 bootstrap.css 도입)
<link rel="stylesheet" href="./lib/bootstrap.css">
3.mysqli_fetch_assoc ($query) 을 사용하여 데이터를 렌더링합니다. 추가 (add.php), 삭제 (del.php), 수정 (edit) 작업이 필요하므로 여기에 먼저 추가합니다.
<div class="container">
<h1 class="text-center">首页</h1>
<table class="table table-bordered">
<thead>
<tr>
<th class="text-center">학번</th>
<th class="text-center">이름</th>
<th class="text-center">성별</th>
<th class="text-center">연령</th>
<th class="text-center">조작하다</th>
</tr>
</thead>
<tbody>
<?php while ($row = mysqli_fetch_assoc($query)): ?>
<tr class="text-center">
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['gender']==1?'♀' : '♂' ; ?></td>
<td><?php echo $row['age']; ?></td>
<td>
<a href="del.php?id=<?php echo $row['id'];?>" class="btn btn-primary">삭제하다</a>
<a href="edit_get.php?id=<?php echo $row['id'];?>" class="btn btn-danger">고치다</a>
</td>
</tr>
<?php endwhile;?>
</tbody>
</table>
<a class="btn btn-primary btn-block" href="add.php">학생 정보 추가</a>
</div>
데이터 추가 (add.php)
1.우리는 여전히 믹스매치 모드, 폼을 사용한다.$_SERVER['PH_SELF']를 사용하여 데이터를 이 페이지에 제출하여 코드를 견고하게 만듭니다
2 post를 이용하여 데이터를 제출하고, 페이지에 기억하기면 알림 메시지 오류
3. 헤더에 데이터베이스 연결, 숫자 삽입의거하다
<?php
// 1. 포스트 제출 여부 판단
// 2. 양식에서 전송된 데이터 처리(비워둘 수 없음!empty;여기는 제가 먼저 처리하지 않겠습니다)
// 3. 데이터베이스를 연결하고 데이터를 삽입합니다
// 4. 조회 시작(insert into)
// 5. 조회 성공 여부 판단
// 6. 삽입 성공 여부 판단`mysqli_affected_rows()`
// 7. 리디렉션
function add_user(){
$name = $_POST['name'];
$age = $_POST['age'];
$gender = $_POST['gender'];
$link = mysqli_connect('127.0.0.1', 'root', '', 'students');
mysqli_query($link,"set names 'utf8';");
if(!link){
$GLOBALS['msg'] = '데이터베이스에 연결할 수 없음';
return;
}
$query = mysqli_query($link,"INSERT INTO stu (name, gender, age) VALUES ('{$name}',{$gender},{$age});");
if (!$query) {
$GLOBALS['msg'] = '쿼리 프로세스 실패';
return;
}
$affected = mysqli_affected_rows($link);
if($affected!==1){
$GLOBALS['error_message'] = '데이터 추가 실패';
return;
}
header('Location:index.php');
}
if($_SERVER['REQUEST_METHOD']==='POST'){
add_user();
}
?>
4.인터페이스
<div class="container add">
<h4 class="alert alert-primary text-center">학생 정보 추가</h4>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">이름</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="name" id="name">
</div>
</div>
<div class="form-group row">
<label for="gender" class="col-sm-2 col-form-label">성별</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="gender" name="gender">
</div>
</div>
<div class="form-group row">
<label for="age" class="col-sm-2 col-form-label">연령</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="age" name="age">
</div>
</div>
<!--여기에 힌트 추가-->
<?php if(!empty($GLOBALS['msg'])): ?>
<div class="alert alert-warning" role="alert">
<?php echo $GLOBALS['msg']; ?>
</div>
<?php endif ?>
<button type="submit" class="btn btn-primary btn-block">저장하다.</button>
</form>
</div>
5.학생 정보 추가를 클릭하여 add.php로 이동합니다
데이터 삭제 (del.php)
1.우리는 이미 홈페이지에 다 적어놨습니다.아이디로 넘어갔는데
2.우리는 들어오는 아이디를 기반으로 sql을 사용합니다.문장을 삭제하시면 됩니다.
3.삭제완료 리디렉션
<?php
// 1. 전달받은 것을 받아들이다id
if(empty($_GET['id'])){
exit('<h1>데이터베이스에 연결할 수 없음</h1>');
}
$id = $_GET['id'];
// 2. 데이터베이스 연결
$link = mysqli_connect('127.0.0.1', 'root', '', 'students');
mysqli_query($link,"set names 'utf8';");
// 3. 데이터 삭제
$query = mysqli_query($link,"delete from stu where id = {$id}");
// 4. 실패한 처리 쿼리
if (!$query) {
exit('<h1>데이터 문의 실패</h1>');
}
// 5. 영향을 받는 줄 수
$affected_rows = mysqli_affected_rows($link);
// 6. 삭제 실패
if ($affected_rows <= 0) {
exit('<h1>삭제 실패</h1>');
}
header('Location: index.php');
?>
조작 수정
1.index.php로부터 아이디를 받아 아이디로 데이터를 조회한다(아이디가 유일하다)
2.인터페이스에 데이터를 렌더링하다
3.아이디 링크 데이터베이스를 통해 해당 데이터 조회
if(empty($_GET['id'])){
exit('<h1>지정한 인자를 불러와야 함</h1>');
return;
}
$id = $_GET['id'];
$link = mysqli_connect('127.0.0.1', 'root', '', 'students');
mysqli_query($link,"set names 'utf8';");
if(!$link){
exit('<h1>데이터베이스에 연결할 수 없음</h1>');
}
$query = mysqli_query($link,"select * from stu where id = {$id} limit 1");
if(!$query){
exit('<h1>데이터 조회 실패</h1>');
}
$user = mysqli_fetch_assoc($query);
if(!$user){
exit('<h1>편집할 데이터를 찾을 수 없습니다</h1>');
}
4.인터페이스 데이터 렌더링
<div class="container edit">
<h4 class="alert alert-primary text-center">학생 정보 추가</h4>
<form method="post" action="edit_post.php">
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">id</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="id" id="name" value="<?php echo $user['id']; ?>">
</div>
</div>
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">이름</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="name" id="name" value="<?php echo $user['name']; ?>">
</div>
</div>
<div class="form-group row">
<label for="gender" class="col-sm-2 col-form-label">성별</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="gender" name="gender" value="<?php echo $user['gender']; ?>">
</div>
</div>
<div class="form-group row">
<label for="age" class="col-sm-2 col-form-label">연령</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="age" name="age" value="<?php echo $user['age']; ?>">
</div>
</div>
<button type="submit" class="btn btn-primary btn-block">저장하다.</button>
</form>
</div>
5.결과(생산환경에서 id는 숨겨야 함)
6.post 데이터 제출, id에 따른 데이터 수정
<?php
var_dump($_POST);
$id = $_POST["id"];
$name = $_POST['name'];
$age = $_POST['age'];
$gender = $_POST['gender'];
$link = mysqli_connect('127.0.0.1', 'root', '', 'students');
mysqli_query($link,"set names 'utf8';");
if(!$link){
exit('<h1>데이터베이스에 연결할 수 없음</h1>');
}
//$query = mysqli_query($link,"update stu set name={$name},age={$age},gender={$gender} where id = {$id};");
var_dump("UPDATE stu SET gender={$gender},age={$age},name='{$name}' WHERE id={$id}");
$query = mysqli_query($link,"UPDATE stu SET gender={$gender},age={$age},name='{$name}' WHERE id={$id}");
if (!$query) {
exit('<h1>데이터 조회 실패</h1>');
}
$affected = mysqli_affected_rows($link);
if($affected!==1){
exit('<h1>편집할 데이터를 찾을 수 없습니다</h1>');
}
header('Location:index.php');
?>
'개발 꿀팁 > PHP' 카테고리의 다른 글
자주 사용하는 PHP 명령 실행 함수 및 활용 방식 (0) | 2022.06.30 |
---|---|
PHP에서 MySQL server has gone away 문제 (0) | 2022.06.30 |
CentOS 7 시스템에 PHP 7.4 버전을 설치하는 방법 (0) | 2022.06.29 |
php Firebase/ php-jwt 토큰 검증 (0) | 2022.06.29 |
php-i 또는 phpinfo()를 사용하여 php 설치, 설정 정보 보기 (0) | 2022.06.29 |