sql >> データベース >  >> RDS >> Mysql

このPHPMySQL登録フォームが機能しないのはなぜですか?

    以下は、プリペアドステートメントで変更されたコードです。

    最初のステップは、データベースに接続することです。そのためには、アクセスの詳細を定義する必要があります。

    // Define Database Credentials
    $servername = "localhost"; //Server Name
    $username = "KyleHulse"; //Username to the DB
    $password = "(my password)"; //Password to the DB
    $dbname = "csdb1082"; //Name of the Database
    
    // Create Database Connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    

    次に、接続を確認します。

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    

    この後、クエリを実行します。これは個人的なプロジェクトであるため、SHA1を使用していることに注意してください。 パスワードのハッシュとして。より大きなプロジェクトの場合は、パスワードを保護する方法についてさらに調査することをお勧めします。

    クエリを実行するには、まずクエリを準備します。これがあなたのやり方です。

    $stmt = $conn->prepare("INSERT INTO feedback (user, password, email) VALUES (?, ?, ?)");
    

    ここでは、ステートメントを$stmtに保存します 変数。クエリにはINSERT INTOがあります テーブルの名前が続きます。あなたの場合はfeedbackです 。

    この後、最初の括弧に保​​存するテーブルのフィールドに入力します。あなたの場合は(user, password, email)になります 続いてVALUES

    この後、(?, ?, ?)を使用して実際の値のプレースホルダーを追加します 。 ?の総数に注意してください 前の括弧内のフィールドの総数と一致する必要があります。

    次に、変数をこれらの?にバインドする必要があります。 。これは、

    によって行われます。
    $stmt->bind_param("sss", $user, $password, $email);
    

    "sss"に注意してください 渡される値の形式です。以下はフォーマットです。

    i - integer
    d - double
    s - string
    b - BLOB
    

    したがって、3つの値を渡す必要があるため、3つのsがあります。 、続いて、HTMLフォームの値を格納する変数

    $user = $_POST["user"];
    $password = sha1($_POST["password"]); //simplest way to use SHA1 hash.
    $email = $_POST["email"];
    

    これで、準備されたステートメントを実行する必要があります。

    $stmt->execute();
    

    以上です!

    以下は完全なコードです。

    // Define Database Credentials
    $servername = "localhost"; //Server Name
    $username = "KyleHulse"; //Username to the DB
    $password = "(my password)"; //Password to the DB
    $dbname = "csdb1082"; //Name of the Database
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    
    $stmt = $conn->prepare("INSERT INTO feedback (user, password, email) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $user, $password, $email);
    
    $user = $_POST["user"];
    $password = sha1($_POST["password"]); //simplest way to use SHA1 hash.
    $email = $_POST["email"];
    
    $stmt->execute();
    

    これがお役に立てば幸いです。



    1. Oracle to_date()の誤った出力

    2. MySQLのすべてのレコードに対して一意のタイムスタンプを取得できますか?

    3. 複数のSQLステートメントを個々のSQLステートメントに分割する

    4. 単一のクエリで再帰的なカテゴリ?