๊ด€๋ฆฌ ๋ฉ”๋‰ด

Jin's Dev Story

[PHP] PHP ์™ธ๋ถ€ DB ์—ฐ๊ฒฐ ๋ณธ๋ฌธ

Programming Language/PHP

[PHP] PHP ์™ธ๋ถ€ DB ์—ฐ๊ฒฐ

woojin._. 2024. 6. 13. 09:03
๐Ÿ’ก PHP๋ฅผ ์ด์šฉํ•˜์—ฌ ์™ธ๋ถ€ DB์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•!

 

  • ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ‘์™ธ๋ถ€’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— (php+์„œ๋ฒ„)๋ฅผ ์ค‘๊ฐ„์— ๋‘๊ณ  ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

๐Ÿ’ก ์ฝ”๋“œ ์ž‘์„ฑ

 

  • ๋จผ์ € build.gradle(App)ํŒŒ์ผ์— ์„œ๋ฒ„ ํ†ต์‹  ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ implementation 'com.android.volley:volley:1.2.1' ์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•จ

Activity์—์„œ Response & Request ๋ฉ”์„œ๋“œ ์ž‘์„ฑ

  1. Response Listener๋ฅผ ์ƒ์„ฑํ•˜๊ณ  onResponse()๋ฉ”์„œ๋“œ @Overrideํ•œ๋‹ค.
  2. JSONArray or JSONObject๊ฐ์ฒด๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  3. ๋งˆ์ง€๋ง‰์—๋Š” RequestActivity๊ฐ์ฒด์— ์ „๋‹ฌํ•  ๊ฐ’์„ ๋‹ด์•„ ์ƒ์„ฑํ•˜๊ณ  RequestQueue๊ฐ์ฒด์— ๋‹ด๋Š”๋‹ค.
private void donation(String category) {
        Response.Listener<String> responseListener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ(์•„์ดํ…œ) ์ดˆ๊ธฐํ™” ํ•ด์ค˜์•ผ ์ค‘์ฒฉ ์•ˆ๋จ.
                adapter.notifyDataSetChanged();

                try {
                    JSONArray jsonArray = new JSONArray(response);
                    JSONObject jsonObject;

                    for (int i = 0; i < jsonArray.length(); i++) {

                        jsonObject = (JSONObject) jsonArray.getJSONObject(i);
                        String titleName = jsonObject.getString("titleName");
                        String name = jsonObject.getString("name");
                        String nowStep = jsonObject.getString("nowStep");
                        String content = jsonObject.getString("content");
                        String date = jsonObject.getString("date");
                        String startDate = jsonObject.getString("startDate");
                        String maxStep = jsonObject.getString("maxStep");
                        String dNum = jsonObject.getString("dNum");
                        String contentImage = jsonObject.getString("contentImage");

                        DonationData mainData = new DonationData(dNum, titleName, name, nowStep, contentImage, content, date, startDate, maxStep);
                        arrayList.add(mainData);
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        };
        DonationRequest donationRequest = new DonationRequest(category, responseListener);
        RequestQueue queue = Volley.newRequestQueue(getActivity());
        queue.add(donationRequest);
    }

์„œ๋ฒ„๋กœ ์š”์ฒญํ•  Request ํŒŒ์ผ ์ž‘์„ฑ

  1. ์„œ๋ฒ„ URL์„ค์ • (phpํŒŒ์ผ ์—ฐ๋™)
  2. Requestํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ์ƒ์„ฑ
    • ํ˜ธ์ถœํ•  ๋•Œ ๋ฐ›์•„์˜ฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ง€์ •
    • super()์— ์ „์†ก๋ฐฉ์‹(POST), listener, errorListener์ง€์ •
    • Mapํƒ€์ž… ๊ฐ์ฒด์— ์„œ๋ฒ„๋กœ ์ „์†กํ•  ๊ฐ’ ๋‹ด๊ธฐ
import android.util.Log;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

// Donation๊ฐ’ ์„œ๋ฒ„๋กœ ์ „์†ก (2023-03-18 ์šฐ์ง„ ์ˆ˜์ •)
public class DonationInsertRequest extends StringRequest {

    final static private String URL = "<http://miraclestep01.dothome.co.kr/InsertDonation.php>"; // ์„œ๋ฒ„ URL ์„ค์ • (PHP ํŒŒ์ผ ์—ฐ๋™.)
    private Map<string, string=""> map;

    public DonationInsertRequest(int dNum, String userId, String userStep, Response.Listener listener) {

        // post๋ฐฉ์‹์œผ๋กœ listener๋ฅผ ์„œ๋ฒ„์— ์ „์†ก.
        super(Request.Method.POST, URL, listener, null);

        // ํ˜„์žฌ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ
        LocalDate now = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String formatedNow = now.format(formatter);

        map = new HashMap<>();
        map.put("dNum", String.valueOf(dNum));
        map.put("userID", userId);
        map.put("userStep", userStep);
        map.put("ddate", String.valueOf(formatedNow));

        Log.d("์–ด๋””", "์ธ์„œํŠธ");
        Log.d("๊ธ€๋ฒˆํ˜ธ", String.valueOf(dNum));
        Log.d("์•„์ด๋””", userId);
        Log.d("๊ธฐ๋ถ€๋‚ ์งœ", formatedNow);
    }

    @Override
    protected Map<string, string=""> getParams() throws AuthFailureError {
        return map;
    }
}
</string,></string,>

์„œ๋ฒ„์— ๋“ฑ๋กํ•  php ํŒŒ์ผ ์ž‘์„ฑ

  1. ์„œ๋ฒ„ DB์— ์—ฐ๊ฒฐ - mysqli_connect()
    • ip์ฃผ์†Œ, id, pw, database, ์ธ์ฝ”๋”ฉ ์„ค์ •
  2. RequestํŒŒ์ผ์—์„œ Map๊ฐ์ฒด์— ๋‹ด์•„ ๋ณด๋‚ธ ๊ฐ’ ์„ธํŒ…
  3. Sql๋ฌธ ์ž‘์„ฑ ๋ฐ ์‹คํ–‰
    • mysqli_prepare(), mysqli_stmt_execute()
  4. ๊ฒฐ๊ณผ ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ ๋ฐ ๊ฒฐ๊ณผ ์ „์†ก

select

<?php
  /*
      SelectUserDonation.php : ๊ธฐ๋ถ€๋‚ด์—ญ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” php (POST ํ˜•์‹์œผ๋กœ MySQL๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ด.)
      con : mysql ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋Š” ๋ณ€์ˆ˜.
      "$๋ณ€์ˆ˜" ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
    */

/* (1) ์„œ๋ฒ„ DB์— ์—ฐ๊ฒฐ.*/
        $con = mysqli_connect("localhost", "miraclestep01", "๋น„๋ฐ€๋ฒˆํ˜ธ", "miraclestep01");  // mysql ์—ฐ๊ฒฐ, IP, ์‚ฌ์šฉ์ž๋ช…, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    mysqli_query($con, 'SET NAMES utf8'); // ์ธ์ฝ”๋”ฉ์„ utf-8๋กœ ์„ธํŒ…. (ํ•œ๊ธ€ ์ „์†ก์ด ๊ฐ€๋Šฅํ•ด์ง.)

    $userID = isset($_POST["userID"]) ? $_POST["userID"] : "test1234@naver.com";

    $statement = mysqli_prepare($con, "SELECT CampaignList.hostingGroup, CampaignList.title , DonationHistory.donationDate, DonationHistory.donationStep FROM CampaignList LEFT JOIN DonationHistory ON CampaignList.campaignIndex = DonationHistory.donationIndex WHERE DonationHistory.userId = ? ORDER BY DonationHistory.donationDate DESC");
    mysqli_stmt_bind_param($statement, "s", $userID);
    mysqli_stmt_execute($statement);

    //mysqli_stmt_store_result($statement);
    mysqli_stmt_bind_result($statement, $DonationGroup, $DonationName, $UserDonationDate, $UserDonationStep);

    /*$statement2 = mysqli_prepare($con, "SELECT DGroup, DName FROM Donation WHERE DNum = ".$DonationNumber);
    //mysqli_stmt_bind_param($statement2, "i", $DonationNumber);
    mysqli_stmt_execute($statement2);

    mysqli_stmt_store_result($statement2);
    mysqli_stmt_bind_result($statement2, $DonationGroup, $DonationName);*/

    $response = array();
    $allResponse = array();
    $response["success"] = false;

     while(mysqli_stmt_fetch($statement)){

        $response["success"] = true;
        $response["donationDate"] = $UserDonationDate;
        $response["donationStep"] = $UserDonationStep;
        $response["titleName"] = $DonationName;
        $response["groupName"] = $DonationGroup;

        $allResponse[] = $response;
    }
    echo json_encode($allResponse);
?>

insert

<?php
 /*
      InsertDonation.php : ๊ฑธ์Œ ์ˆ˜๋ฅผ ๊ธฐ๋ถ€ํ•˜๋Š” ์‚ฌ์šฉ์ž php (POST ํ˜•์‹์œผ๋กœ MySQL๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ด.)
      con : mysql ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋Š” ๋ณ€์ˆ˜.
      "$๋ณ€์ˆ˜" ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
    */

/* (1) ์„œ๋ฒ„ DB์— ์—ฐ๊ฒฐ.*/
    $con = mysqli_connect("localhost", "miraclestep01", "๋น„๋ฐ€๋ฒˆํ˜ธ", "miraclestep01");
    mysqli_query($con, 'SET NAMES utf8');   /* ์ธ์ฝ”๋”ฉ์„ utf-8๋กœ ์„ธํŒ…. (ํ•œ๊ธ€ ์ „์†ก์ด ๊ฐ€๋Šฅํ•ด์ง.) */

/* (2) DB์— ์ €์žฅํ•  ๊ฐ์ฒด ์„ ์–ธ. */
    $userID = isset($_POST["userID"]) ? $_POST["userID"] : "";

    // dateํƒ€์ž…์„ php๋Š” String์œผ๋กœ ๋ฐ›์•„๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜•๋ณ€ํ™˜
    $ddate = isset($_POST["ddate"]) ? $_POST["ddate"] : "";
    $ddate=str_replace(".","-",$ddate);
    $ddate=str_replace("/","-",$ddate);
    $ddate = date('Ymd', strtotime($ddate));

    $dNum = isset($_POST["dNum"]) ? $_POST["dNum"] : "";
    $userStep = isset($_POST["userStep"]) ? $_POST["userStep"] : "";

/* (3) DB์•ˆ์— insertํ•˜๋Š” ๋ฌธ์žฅ. (UserDonation) */
    $statement = mysqli_prepare($con, "INSERT INTO DonationHistory (donationIndex, userId, donationDate, donationStep) VALUES (?,?,?,?)");
    mysqli_stmt_bind_param($statement, "issi", $dNum, $userID, $ddate, $userStep);
    mysqli_stmt_execute($statement);

/* (4) ์„ฑ๊ณต ์—ฌ๋ถ€ ์ „์†ก. */
    $response = array();
    $response["success"] = true;

/* (5) ์‹คํ–‰ ๊ฒฐ๊ณผ ์ „์†ก. */
    echo json_encode($response);
?>

update

<?php
 /*
      UpdateDonation.php : ํ•ด๋‹น ์บ ํŽ˜์ธ์˜ ํ˜„์žฌ ๊ธฐ๋ถ€๋œ ๊ฑธ์Œ ์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” php (POST ํ˜•์‹์œผ๋กœ MySQL๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ด.)
      con : mysql ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋Š” ๋ณ€์ˆ˜.
      "$๋ณ€์ˆ˜" ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
    */

/* (1) ์„œ๋ฒ„ DB์— ์—ฐ๊ฒฐ.*/
    $con = mysqli_connect("localhost", "miraclestep01", "๋น„๋ฐ€๋ฒˆํ˜ธ", "miraclestep01");
    mysqli_query($con, 'SET NAMES utf8');   /* ์ธ์ฝ”๋”ฉ์„ utf-8๋กœ ์„ธํŒ…. (ํ•œ๊ธ€ ์ „์†ก์ด ๊ฐ€๋Šฅํ•ด์ง.) */

/* (2) DB์— ์ €์žฅํ•  ๊ฐ์ฒด ์„ ์–ธ. */
    $dNum = isset($_POST["dNum"]) ? $_POST["dNum"] : "0";

    $updateStep = isset($_POST["updateStep"]) ? $_POST["updateStep"] : "";

/* (3) DB์•ˆ์— insertํ•˜๋Š” ๋ฌธ์žฅ. (Donation) */
    $statement = mysqli_prepare($con, "UPDATE CampaignList SET nowDonation = ? Where campaignIndex = ?");
    mysqli_stmt_bind_param($statement, "ii", $updateStep, $dNum);
    mysqli_stmt_execute($statement);

/* (4) ์„ฑ๊ณต ์—ฌ๋ถ€ ์ „์†ก. */
    $response = array();
    $response["success"] = true;

    echo json_encode($response);
?>

'Programming Language > PHP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[PHP] PHP ์‚ฌ์šฉ ๋ฐฉ๋ฒ•  (0) 2024.06.13
[PHP] PHP  (0) 2024.06.13