0

我为我的婚礼网站构建了一个歌曲请求表单,并想在将表单输入存储到数据库之前检查我存储表单输入的变量是否为空。我的目标很简单,防止在触发 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_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

但是,作为对您问题的直接回答:不是在插入结果之后进行验证,而是在之前进行验证。 此外,如果您确实使用 mysql_* 函数,请记住清理(使用mysql_real_escape_string)您插入数据库的任何内容。清理输入将防止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

使用空应该就足够了。也有 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 回答
0

首先通过函数或使用 if 语句来验证变量

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