2013-06-19 157 views
0

我找不出什么问题与我的PHP,但INSERT函数似乎总是失败。我列出了正确的表格行,但这可能只是一个简单的语法问题。如果需要该代码,我也可以提供。这是我的PHP和数据库结构:PHP简单插入问题

enter image description here

<?php 
$con = mysql_connect('***','***','***'); 
    if (!$con) 
{ 
    echo "Failed to make connection."; 
    exit; 
} 
$db = mysql_select_db('***'); 
if (!$db) 
{ 
    echo "Failed to select db."; 
    exit; 
} 
$username = $_POST['username']; 
$password = $_POST['password']; 
$name  = $_POST['name']; 
$email  = $_POST['email']; 
$sql  = "SELECT username,email FROM Users WHERE username = '" . $username . "' OR email = '" . $email . "'"; 
$query  = mysql_query($sql); 
if (mysql_num_rows($query) > 0) 
{ 
    echo "That username or email already exists"; 
} 
else 
{ 
    $insert = "INSERT INTO Users(username,password,name,email) VALUES ('" . $username . "','" . $password . "','" . $name . "','" . $email . "')"; 
    $query = mysql_query($insert); 
    if ($query) 
    { 
     echo "Thanks for registering. You may now login."; 
    } 
    else 
    { 
     echo "Insert failed"; 
    } 
} 
?> 
+2

什么是MySQL错误 – zod

+2

是id是自动递增? – zod

+2

也是你的脚本充满了SQL注入漏洞,请阅读http://php.net/manual/en/security.database.sql-injection.php :) – faffaffaff

回答

1

抛出这个错误。你尽管去之前住就拿了这一点。

$query = mysql_query($insert); 
if (!$query) { 
    die('Invalid query: ' . mysql_error()); 
} else { 
    echo "Thanks for registering. You may now login."; 
} 

此外,您的登录表单的建议。使用http://www.php.net/manual/en/function.mysql-real-escape-string.php将输入到数据库中的东西转义出来。我还建议找到一个很好的正则表达式来验证电子邮件,然后再保存它。甚至至少可以散列密码。

+0

在php中有过滤器,那么为什么你想重新发明轮子 – bugwheels94

+0

好点。假设他们至少在PHP 5.2 IIRC。 – IchBin

+0

是否可以使用上面的当前脚本显示一些清理数据的示例? – Klinetel

1

可能是你没有在用户和“(”之间有一个空格 另外,是用大写字母你的表 也许表。有一些前缀?如果查询失败,所以你可以看到发生了什么

+1

分隔符字符周围的空格不是必需的。 – Barmar

1

这是未经测试,但它可能像这样简单:

$insert = "INSERT INTO Users(username,password,name,email) VALUES ('$username','$password','$name','$email')"; 
+0

谢谢,你知道如何在Mysqli中重写这个脚本吗? – Klinetel