2013-10-17 38 views
1

`我试图从注册表格输入数据到数据库,但它似乎不工作,我认为我做了正确的编码我不确定我在哪里做错了我阅读代码代码和我创建的所有数据库都遵循。我无法从表单到数据库输入信息

<form method='post' action='login.php'> 
<table width='400' border='5' align='CENTER'> 

<tr> 
<td><h1>Registration</h1></td> 

</tr> 

<tr> 
<td>User Name:</td> 
<td><input type='text' name='name'/></td> 
</tr> 

<tr> 
<td>Password:</td> 
<td><input type='password' name='pass'/></td> 
</tr> 
<tr> 
<td>Email:</td> 
<td><input type='text' name='email'/></td> 
</tr> 
<tr> 
<td><input type='submit' name='register' value='register'/></td> 

</tr> 

</table> 
</form> 

<?php 
    $connect=mysql_connect("localhost","root",""); 
    $db_selected = mysql_select_db("users_db", $connect); 
    if(isset($_POST['submit'])){ 

    $users_name = $_POST['name']; 
    $users_pass = $_POST['pass']; 
    $users_email = $_POST['email']; 

    if($users_name==''){ 
    echo "<script>alert('Please enter your Username')</script>"; 
     exit(); 
    } 

    if($users_pass==''){ 
    echo "<script>alert('Please enter your password')</script>"; 
     exit(); 
    } 

    if($users_email==''){ 
    echo "<script>alert('Please enter your email')</script>"; 
     exit(); 
    } 

    $check_email="select*from 
    users where 
    users_email='$users_email'"; 

    $run = 
    mysql_query($check_email) or 
    die(mysql_error()); 


    if(mysql_num_rows($run)>0){ 

    echo"<script>alert('Email $users_email 
    is already exist in our databse, please try another 
    one')</script>"; exit(); 
    } 


    $query = "insert into users 
    (users_name,users_pass,users_email) values(' 
    $users_name','$users_pass','$users_email')"; 


    { 
     $result = mysql_query($query) 
     or die(mysql_error()); 
    } 

    echo"<script>alert 
    window.open('','_self')</script>"; 
    } 

?> 
+9

**危险**:您正在使用[an **过时的**数据库API](http://stackoverflow.com/q/12859942/19068)并应使用[现代替换](http:// php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻击](http://bobby-tables.com/)**,现代的API会使[防御]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己从。 – Quentin

+0

您是否尝试过'echo'echo'$ query'并在phpMyAdmin或其他数据库工具中运行最终查询以确保它是正确的? –

+0

我没有看到任何'INSERT'语句。所以没有数据会进入你的数据库 – Machavity

回答

1

更改初始分配到:

$users_name = mysql_real_escape_string($_POST['name']); 
$users_pass = mysql_real_escape_string($_POST['pass']); 
$users_email = mysql_real_escape_string($_POST['email']); 

,以避免在田里特殊字符的问题,以及为防止SQL注入。

改变插入查询:

$query = "insert into users (users_name,users_pass,users_email) 
      values('$users_name','$users_pass','$users_email')"; 

$users_name之前有一个多余的换行符和空格,所以这些正在插入到数据库中。

+0

我尝试过,但仍然是相同的结果没有数据库从表格中输入 – dean012

+1

如果你echo $ query'然后在PhpMyAdmin中手动运行会发生什么? – Barmar

+0

你是什么意思? – dean012

相关问题