이제 4번째네요... PHP로 할 수 있는 게 정말 다양하다는 걸 다시한번 느꼈습니다. 그리고... 그냥 javascript면 대충 해결되겠지... 라고 생각했는데... 참으로 거시기하네요. 오히려 웹앱을 개발하려면 서버측 개발이 더 중요한데 말이죠.
MySQL 개요
- MySQL은 웹에서 사용되는 DBMS. 서버에서 수행됨. 크기에 관계없이 사용가능.
- 빠르고, 신뢰성 높고, 사용하기 쉬움. 표준 SQL의 지원, 다양한 platform 지원, 무료
- Oracle에서 개발 보급. 이름은 공동개발자의 딸의 이름(My)를 따서 지음
- 특히 MySQL + PHP 를 하면 cross-platform 으로 매우 유용함
- MySQL을 어떻게 사용하는가는 SQL을 얼마나 잘 할 수 있는가에 달려있음.
MySQL 서버에 접속
<?php
$con = mysqli_connect("example.com", "peter", "abc123", "my_db");
// host, username, password, db_name
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL. : " . mysqli_connect_errno();
}
....
mysqli_close($con);
?>
Create DB / Create Table
- cafe24 호스팅의 경우, 새로운 DB를 생성할 수 없음. 기존의 DB를 사용해야 함.
- 기존 DB 명은 사용자id와 동일
....
$sql = "CREATE DATABASE my_db";
if(!mysqli_query($con, $sql) {
echo "Error creating DB : " . mysqli_error($con);
} else {
echo "Successful";
}
$sql ="CREATE TABLE Persons(
PID INT NOT NULL AUTO_INCREMENT, //
PRIMARY KEY(PID), // PID를 primary key!
FirstName CHAR(30),
LastName CHAR(30),
Age INT)";
if(!mysqli_query($con, $sql) {
echo "Error creating Table : " . mysqli_error($con);
} else {
echo "Successful";
}
Insert a row
- INSERT INTO table_name VALUES (value1, value2, value3,...)
- INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
- 데이터 입력을 받는 폼
<html>
<body>
<form action="insert_data.php" method="post">
Firstname: <input type="text" name="firstname"><br />
Lastname: <input type="text" name="lastname"><br />
Age: <input type="text" name="age"><br />
<input type="submit">
</form>
</body>
</html>
- 실제로 Table에 입력해 주는 php
<?php
$con=mysqli_connect("localhost","id","pw","dbname");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// 폼에서 입력된 항목을 SQL INJECTION 을 방지하기 위해 escape 처리
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$firstname', '$lastname', '$age')";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
Read Data from MySQL
- mysqli_query()를 사용하여 SELECT 문을 사용하면 데이터를 읽을 수 있음
- mysqli_fetch_array를 사용하면 한 record 씩 배열로 받아짐.
- 그 결과를 html로 표현함.
<?php
$con=mysqli_connect("localhost","id","pw","db_name");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Persons");
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>