IT

PHP의 MariaDB에서 정보 가져오기

itgroup 2022. 12. 27. 21:14
반응형

PHP의 MariaDB에서 정보 가져오기

저는 MariaDB로 단순한 데이터베이스에 값을 저장하기 위한 코드를 PHP에 가지고 있습니다.

제 테이블입니다.

create table test(
    id int NOT NULL AUTO_INCREMENT,
    name varchar(255) UNIQUE,
    date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

PHP 코드는 다음과 같습니다.

<meta http-equiv="refresh" content="6;http://10.15.34.194/form.html">

<?php
$host = "localhost";
$db_name = "XXX";
$username = "XXX";
$password = "XXX";
$connection = null;

try{
    $connection = new PDO("mysql:host=" . $host . ";dbname=" . $db_name, $username, $password);
    $connection->exec("set names utf8");
}catch(PDOException $exception){
    echo "Connection error: " . $exception->getMessage();
}

function saveData($name){
    global $connection;
    $query = "INSERT INTO test(name) VALUES( :name )";
    $callToDb = $connection->prepare( $query );
    $name=htmlspecialchars(strip_tags($name));
    $callToDb->bindParam(":name", $name);

    if (!$callToDb->execute()) {
        $affected_rows = $callToDb->rowCount();

        if ($affected_rows == 0) {
            printf('<h1> register: ' . $name . ' ALREADY IN TABLE </h1>');
        }
    } else { 
        printf('<h1> SAVING RESULT ' . $name .  '</h1>'); 
    }
}


if( isset($_POST['submit'])){
    $name = htmlentities($_POST['name']);
    $result = saveData($name);
    echo $result;
}
else{
    echo '<h3 style="text-align:center;">ERROR</h3>';
}
?>

이 인쇄물에는 값이 저장되었을 때의 데이터베이스 타임스탬프를 보여주고 싶습니다.

printf('<h1> register: ' . $name . ' ALREADY IN TABLE </h1>');
    

현재 시도하고 있는 것은 반복할 때 테이블 내에 있는 이름과 경고만 보여주는 값을 등록하는 것입니다.그러나 테이블에 생성되는 타임스탬프(및 clumn "date"에 저장됨)도 보여 주고 싶습니다.

두 번째 쿼리를 생성하려고 했지만 코드가 깨지고 있습니다.

다음과 같은 인쇄물을 만들고 싶습니다.

printf('<h1> register: ' . $name . ' ALREADY IN TABLE </h1>' '<h1> timestamp : ' . $date . '</h1>);
    

두 번째 dabatase 연결을 만드는 방법과 $name 변수를 사용하여 새 쿼리를 재생성하여 반복 변수의 타임스탬프를 가져오고 $name 변수와 $date를 모두 포함하는 방법을 알 수 없습니다.

사용할 수 있습니다.try {} catch () {}접근법:

function saveData($connection, $name){
    //global $connection;
    
    $query = "INSERT INTO test(name) VALUES( :name )";
    $callToDb = $connection->prepare( $query );
    $name=htmlspecialchars(strip_tags($name));
    $callToDb->bindParam(":name", $name);

    try {
        $callToDb->execute();
        printf('<h1> register: ' . $name . ' </h1>');
    } catch (PDOException $e) {
        $error = $e->errorInfo;
        printf('<h1> SAVING RESULT ' . $error[2] .  '</h1>'); 
    }
}

PHP 코드 공유

이 쿼리를 사용하여 데이터베이스에서 선택할 수 있습니다.


<?php
function saveData($connection, $name){
    $query = "INSERT INTO test(name) VALUES( :name )";
    $callToDb = $connection->prepare( $query );
    $name=htmlspecialchars(strip_tags($name));
    $callToDb->bindParam(":name", $name);

    try {
        $callToDb->execute();
        printf('<h1> register: ' . $name . ' </h1>');
    } catch (PDOException $e) {
        $error = $e->errorInfo;
        printf('<h1> SAVING RESULT ' . $error[2] .  '</h1>'); 
    }
    $query = "SELECT date FROM test WHERE name = ?";
    $result = $connection->prepare($query);
    try {
    $result->execute([$name]);
    $date = $result->fetch();
    printf('<h1> on ' . $date . '</h1>');
    }catch(PDOException $e){
        $error = $e->errorInfo;
        printf('<h1> SAVING RESULT ' . $error[2] .  '</h1>'); 
    }
}
//just to test the connection
$name = 'Gerrit';
$result = saveData($connection, $name);

내 PHP 코드 / 테스트

크레딧: @Slava Rozhnev(이 코드의 대부분을 그가 작성했습니다).질문에 더 잘 대답하기 위해서일 뿐이지 훔치거나 하는 것은 아닙니다.

언급URL : https://stackoverflow.com/questions/65904087/get-info-from-mariadb-in-php

반응형