php로 데이터베이스에 있는 내용 출력하기
- 프로그래밍/웹사이트
- 2019. 12. 26.
php로 데이터베이스에 있는 내용 출력.
오늘은 php를 이용해서 데이터베이스에 있는 내용을 웹페이지(php)에 출력해보겠습니다.
글을 보다가 sql문이 궁금하다면 검색하거나 제가 얼마전에 썻던 데이터베이스 관련글을 참고해주세요.
(글 중간에 링크를 넣어놓겠습니다.)
- 1. 사용할 데이터베이스.
- 2. 코드.
- 3. 결과, 수정.
1. 사용할 데이터베이스.
데이터베이스는 제가 프로젝트를 하면서 만들었던 study라는 이름을 가진 데이터베이스를 활용할 겁니다.
테이블은 프로젝트를 하면서 입력해놓은 food라는 테이블을 사용하겠습니다.
(여러분은 그냥 참고하시거나 데이터베이스 이름, 테이블 이름, 조건만 살짝 수정하셔서 해보시면 됩니다.)
테이블의 구성은 아래와 같습니다.
*이부분은 별로 중요하지 않습니다.
그냥 이런게 있다 이런식으로만 넘어가시면 됩니다.
fo_id, fo_name, fo_kind, fo_price, fo_rest, fo_addr, fo_image이렇게 컬럼이 구성되어있으며 자세한 내용은 아래 사진을 참고하세요.
fo_image부분때문에 지저분해서 fo_id와 fo_name만 출력해봤습니다.
1735개의 데이터가 있습니다.
코드.
전체 코드는 아래 올려놓겠습니다.
일단 php에서 데이터베이스를 사용하기 위한 코드입니다.
mysqli_connect('아이피','아이디','비밀번호','테이블','포트')로 되어있습니다.
아래 처럼 작성합니다.($conn은 제가 임의로 만든 php변수입니다.)
<?php
$conn= mysqli_connect('localhost', 'root', '123456', 'study');
?>
sql문
원하는 sql문을 아래 예시처럼 작성합니다.
($sql은 제가 임의로 만든 php 변수입니다.)
아래의 sql은 food테이블에서 fo_kind가 한식인 것중 랜덤으로 5개를 출력하는 sql입니다.
<?php
$sql="SELECT * FROM food where fo_kind='한식' order by rand() limit 5";
?>
[프로그래밍/웹사이트] - 데이터베이스 select, from
[프로그래밍/웹사이트] - 데이터베이스 where (조건)
mysqli_query
mysqli_query를 이용해서 mysql 쿼리를 실행시켜줍니다.
mysqli_query(연결객체,쿼리)
<?php
$result=mysqli_query($conn,$sql);
?>
mysqli_fetch_array
mysqli_fetch_array는 mysqli_query에서 얻은 result set에서 레코드를 하나씩 리턴해줍니다.
<?php
$board=mysqli_fetch_array($result);
?>
이제 출력을 해보겠습니다.
출력은 echo로 하겠습니다.
<?php
echo $board['fo_name'];
?>
이렇게 하면 출력은 되지만 문제가 조금 있습니다.
바로 하나만 출력된다는 것 입니다.
이 문제점은 실행결과를 보여드리고 수정하겠습니다.
지금까지의 코드입니다.
<!DOCTYPE html>
<html lang="kr" dir="ltr">
<head>
<meta charset="utf-8">
<title>php에서 데이터베이스</title>
<?php
$conn= mysqli_connect('localhost', 'root', '123456', 'study');
$sql="SELECT * FROM food where fo_kind='한식' order by rand() limit 5";
$result=mysqli_query($conn,$sql);
?>
</head>
<body>
<?php
$board = mysqli_fetch_array($result);
echo $board['fo_name'];
?>
</body>
</html>
결과&수정.
지금까지의 코드를 실행하면 이런식으로 데이터베이스의 내용이 출력이 되기는 합니다.
하지만 제가 원하는 결과는 데이터베이스에서 얻은 모든 결과를 출력하는 것 입니다.
그러므로 출력하는 부분을 조금 수정해보겠습니다.
while문을 사용해보았습니다.
<?php
while($board = mysqli_fetch_array($result)){
echo $board['fo_name'];
}
?>
출력이 다 되네요.
그런데 출력되는 형태가 마음에 들지 않습니다.
그래서 좀더 알아보기 쉽게 </br>태그를 넣고 나머지 컬럼도 출력하도록 만들었습니다.
<?php
while($board = mysqli_fetch_array($result)){
echo $board['fo_id']."번 음식이름: ".$board['fo_name']." 가격: ".$board['fo_price']." 주소: ".$board['fo_addr']."</br>";
}
?>
결과는 다음과 같습니다.
전체 코드.
<!DOCTYPE html>
<html lang="kr" dir="ltr">
<head>
<meta charset="utf-8">
<title>php에서 데이터베이스</title>
<?php
$conn= mysqli_connect('localhost', 'root', '123456', 'study');
$sql="SELECT * FROM food where fo_kind='한식' order by rand() limit 5";
$result=mysqli_query($conn,$sql);
?>
</head>
<body>
<?php
while($board = mysqli_fetch_array($result)){
echo $board['fo_id']."번 음식이름: ";
echo $board['fo_name']." 가격: ";
echo $board['fo_price']." 주소: ";
echo $board['fo_addr']."</br>";
}
?>
</body>
</html>
echo부분은 전체 코드처럼 써도 되고 위에 조금 보여준대로 써도 됩니다.
어차피 결과는 같습니다.