0

結婚式のウェブサイト用に曲のリクエスト フォームを作成しました。データベースに POST する前に、フォーム入力を保存している変数が空かどうかを確認したいと思います。私の目標は、 for が起動されたときに空白の行が mysql db に追加されるのを防ぐことです。

 <?php 
// extract data from form; store in variable
$artist =  $_POST["artist"];
$song = $_POST["song"];

// connect to server 
$conn = mysql_connect('host', 'user', 'pass');


// check if you can connect; if not then die

if (!$conn) {
    echo "<center>";
    die('Could Not Connect: ' . mysql_error());
    echo "</center>";
    }

// check if you can select table; in not then die

$db = mysql_select_db('database', $conn);

if (!$db) {
    echo "<center>";
    die('Database Not Selected: ' . mysql_error());
    echo "</center>";
    }

// Define the query to inser the song request
$insert = mysql_query("INSERT INTO Songs (Artist, Song) VALUES ('$artist', '$song')");  

// check if above variables are empty 
if (!empty($artist) and !empty($song)) {
    echo "<center>";
    echo "Insert was succesful<br>";
    echo "<a href='index.html' target='_self' >Back</a>";
    echo "</center>";
}
else {
    echo "<center>";
    die("Please fill in at least the artist name");
    echo "</center>";
}

// close the connection to the server
mysql_close($conn);
?>

上記は、インデックスページのフォームが送信されたときに起動されるinsert.phpというファイルにあります。フォームは POST を使用して送信され、問題なく動作しますが、空白の送信が発生しないようにしたいと考えています。

プログラミングは初めてで、これを正しく行う方法を学びたいと考えています。

お待ち頂きまして、ありがとうございます。

4

5 に答える 5

4

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

ただし、質問に対する簡単な答えとして、結果を挿入した後に検証するのではなく、検証する前に検証してください。 また、mysql_real_escape_stringmysql_* 関数を使用する場合は、データベースに挿入するものを ( を使用して) サニタイズすることを忘れないでください。入力をサニタイズすると、 SQL インジェクションが防止され、一部の脆弱性の問題が解消されます。

if($errors) {
    // there are errors, don't submit to database
    // run through error display process

} else {
    // submit to database
    $insert = mysql_query("INSERT INTO Songs (Artist, Song) VALUES ('$artist', '$song')");
}
于 2012-12-26T18:46:53.760 に答える
2

あなたはとても近いです!あとはアーティストや曲名が埋まっているかチェックしてインサートを入れるだけ!

<?php 
    // extract data from form; store in variable
    $artist =  $_POST["artist"];
    $song = $_POST["song"];

    // connect to server 
    $conn = mysql_connect('host', 'user', 'pass');

    // check if you can connect; if not then die

    if (!$conn) {
        echo "<center>";
        die('Could Not Connect: ' . mysql_error());
        echo "</center>";
    }

    // check if you can select table; in not then die

    $db = mysql_select_db('database', $conn);

    if (!$db) {
        echo "<center>";
        die('Database Not Selected: ' . mysql_error());
        echo "</center>";
    }

    // check if above variables are empty 
    if (!empty($artist) and !empty($song)) {
        // Define the query to inser the song request
        $insert = mysql_query("INSERT INTO Songs (Artist, Song) VALUES ('$artist', '$song')");  

        if($insert) {
          echo "<center>";
          echo "Insert was succesful<br>";
          echo "<a href='index.html' target='_self' >Back</a>";
          echo "</center>";
        }
    }
    else {
        echo "<center>";
        die("Please fill in at least the artist name");
        echo "</center>";
    }

    // close the connection to the server
    mysql_close($conn);

それでおしまい!

于 2012-12-26T18:48:41.903 に答える
0

最初に関数を介して変数を検証するか、次のようなifステートメントを使用します

if (!empty($artist) && !empty($song))
 { $insert = mysql_query("INSERT INTO Songs (Artist, Song) VALUES ('$artist', '$song')");}
于 2012-12-26T18:57:26.587 に答える
0

empty を使用するだけで十分です。issetもあります

http://php.net/manual/en/function.isset.php

于 2012-12-26T18:46:44.163 に答える
0

さて、あなたはすでに との小切手を持っていますempty。インサートの前に移動し、それに応じて行動するだけです

if (empty($artist)) {
    echo "<center>";
    die("Please fill in at least the artist name");
    echo "</center>";
}

または両方にチェックを入れる

if (empty($artist) or empty($song)) {
...
}
于 2012-12-26T18:50:08.407 に答える