用SQL进行PHP验证

用SQL进行PHP验证,php,mysql,validation,Php,Mysql,Validation,嗨,我是PHP的新手,我只是在做一个简单的学习表格。它只包含一个电子邮件地址,我想验证信息并将其发送到数据库。我的问题是将其连接到数据库。我已经做了一些教程,但只是让自己感到困惑 现在这是我的主页 reg.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=

嗨,我是PHP的新手,我只是在做一个简单的学习表格。它只包含一个电子邮件地址,我想验证信息并将其发送到数据库。我的问题是将其连接到数据库。我已经做了一些教程,但只是让自己感到困惑

现在这是我的主页

reg.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registration Form</title>
</head>

<body>
<?php include("validation.php"); ?>
<form method="post" action="connect.php" name="form">
<ul id="errors">
    <li><?php echo $err_email; ?></li>
</ul>   
<div id="wrapper">
<div>Email</div>
<div class="input"><input type="text" name="email" value="<?php echo $val_email; ?>" /></div>


</div>
</form>
</body>
</html>
这是我的validation.php文件

<?php
if($_POST)
{
    $email = $_POST['email']; 

    // Email
    if (preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $email)) {
        $val_email = $email; 
    }else{ 
        $err_email = 'Please enter valid Email address.'; 
    }

    if((strlen($val_email)>0) ){
        header("Location: reg");
    }else{ }
}
?>
最后是我的连接文件

 <?php

$host="localhost";
$username="admin";
$password=""; // Mysql password
$db_name="davidtest"; // Database name
$tbl_name="users"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("davidtest")or die("cannot select DB");

// Get values from form
$email=$_POST['email'];

// Insert data into mysql
$sql="INSERT INTO $users(email)VALUES('$email')";
$result=mysql_query($sql);

// close connection
mysql_close();
?>
$users不是变量,因此在放入表中时将为空。我猜你的意思是

$sql="INSERT INTO $tbl_name (email) VALUES ('$email')";
但是,您不应该在查询中使用未转义的用户字符串,因为恶意用户可能会将SQL注入到您在SQL注入时读取的查询中


另外请注意,mysql_*系列函数现在已弃用,不再维护,并将在PHP的未来版本中删除。考虑MyQuLi或PDO。

你的确切问题是什么?你有MySQL错误吗?如果你是全新的,跳到PDO。你的方式已经过时了。最好从新的开始。mysql扩展已被弃用。建议使用或。
$sql="INSERT INTO $tbl_name (email) VALUES ('$email')";