0

私は基本的な CRUD アプリケーションを作成して、理解を深めていますPHP。次のコードが正確に何をしているのか、少し混乱しています。私はそれの一般的な概念を理解していますが、ロジックが進行していることを 100% 確信しているわけではありません。

誰かがそれをもう少しよく理解するのを手伝ってくれることを願っていますか?

これは私のスクリプトです

    <?php
//Establish connection to db
require_once 'includes/db.php';

//Array for validation
$errors = array();

//Sanitize the fields to ensure db integrity.
$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING);
$release_date = filter_input(INPUT_POST, 'release_date', FILTER_SANITIZE_NUMBER_INT);
$publisher = filter_input(INPUT_POST, 'publisher', FILTER_SANITIZE_STRING);
$system = filter_input(INPUT_POST, 'system', FILTER_SANITIZE_STRING);
$rating = filter_input(INPUT_POST, 'rating', FILTER_SANITIZE_NUMBER_INT);
$num_players = filter_input(INPUT_POST, 'num_players', FILTER_SANITIZE_NUMBER_INT);


if($_SERVER['REQUEST_METHOD']=='POST'){

    //Validate the form
    if(empty($title)){
        $errors['title'] = true;
    }
    if(empty($release_date)){
        $errors['release_date'] = true;
    }
    if(empty($publisher)){
        $errors['publisher'] = true;
    }
    if(empty($system)){
        $errors['system'] = true;
    }
    if(empty($rating)){
        $errors['rating'] = true;
    }
    if(empty($num_players)){
        $errors['num_players'] = true;
    }

    //If no errors
    if(empty($errors)){
        //Build SQL Statement
        $sql = $db->prepare("INSERT INTO videogames SET title = :title, release_date = :release_date, publisher = :publisher, system = :system, rating = :rating, num_players = :num_players");
        //Bind values
        $sql -> bindValue(':title', $title, PDO::PARAM_STR);
        $sql -> bindValue(':release_date', $release_date, PDO::PARAM_STR);
        $sql -> bindValue(':publisher', $publisher, PDO::PARAM_STR);
        $sql -> bindValue(':system', $system, PDO::PARAM_STR);
        $sql -> bindValue(':rating', $rating, PDO::PARAM_INT);
        $sql -> bindValue(':num_players', $num_players, PDO::PARAM_INT);

        //Execute SQL
        $sql -> execute();

        //Redirect back to homepage
        header('Location: index.php');
        exit();
    }
}

?>

このコード行が何をしているのかについて、私は少し混乱しています:

$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING);

フォームの入力フィールドの値を$title変数に代入していますか?

また、この行:

        $sql -> bindValue(':title', $title, PDO::PARAM_STR);

私はこれをドキュメントで読みました

ステートメントの準備に使用された SQL ステートメント内の対応する名前付きプレースホルダーまたは疑問符プレースホルダーに値をバインドします。

すでに$title変数にデータを格納している場合、SQLステートメントを準備する別の方法はありますか?

PHPの知識を広げようとしているので、助けていただければ幸いです。どうもありがとう!

4

1 に答える 1