php表单没有将表单数据写入mysql数据库

bjs*_*e15 1 php mysql forms database-connection phpmyadmin

我必须在下面编码 - 更新

PHP代码

    if(empty($_POST['formEmail'])) 
    {
        $errorMessage .= "<li>You forgot to enter your email</li>";
    }

    $varEmail = $_POST['formEmail'];

    if(empty($errorMessage)) 
    {

        $db = mysql_connect("servername","username","password");
        if(!$db) die("Error connecting to MySQL database.");
        mysql_select_db("tableName" ,$db);



    $sql = "INSERT INTO emails(email) VALUES ('$varEmail')";

    mysql_query($sql);


echo "Details added";
$_SESSION['status'] = 'success';
 }

exit();


    }

function PrepSQL($value)
{
    // Stripslashes
    if(get_magic_quotes_gpc()) 
    {
        $value = stripslashes($value);
    }

    // Quote
    $value = "'" . mysql_real_escape_string($value) . "'";

    return($value);
}
?>
Run Code Online (Sandbox Code Playgroud)

表格代码

    <?php
if(!empty($errorMessage)) 
{
echo("<p>There was an error with your form:</p>\n");
echo("<ul>" . $errorMessage . "</ul>\n");
    }
    ?>

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>
<label for='formEmail'>Sign up to be notified when we go live!</label><br/>
<input type="text" name="formEmail" maxlength="50" value="<?=$varEmail;?>" />
</p>
<input type="submit" name="formSubmit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误,据我所知,语法看起来很好,但它没有将电子邮件信息放入数据库.任何人都知道最近会发生什么?作为旁注,我是所有php的新手.

Cli*_*ive 6

你忘了运行查询了!放

mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)

之后

$sql = "INSERT INTO emails(email) VALUES ('$varEmail')";
Run Code Online (Sandbox Code Playgroud)

确保你也运行$_POST变量mysql_real_escape_string:

$varEmail = mysql_real_escape_string($_POST['formEmail']);
Run Code Online (Sandbox Code Playgroud)

这将有助于保护您免受SQL注入攻击.

编辑

还有一件小事,我想你想success在表单成功提交时设置会话变量.要做到这一点你需要移动

echo "Details added";
$_SESSION['status'] = 'success';
Run Code Online (Sandbox Code Playgroud)

在与if运行SQL查询相同的结构内,否则永远不会设置