2013-11-01 46 views
0

我在我的网站上注册表单时遇到了我的PHP代码问题。提交表单时,某些代码不会执行。PHP注册脚本,插入数据库不工作

if ($fnameError = "" && $emailError = "" && $userError = "" && $passError = "" && $cpassError = "" && $tickError = "") { 
    $con = mysqli_connect("localhost","root","","login")or die("Can't connect to database"); 

    $user = $_POST['user']; 
    $pass = $_POST['pass']; 
    $name = $_POST['fname']; 
    $email = $_POST['email']; 

    $pwd = crypt('$pass', '$user'); 
    $pwd = md5($pwd); 
    $tblname = "users"; 
    $flp="INSERT INTO $tblname (Name, Username, Password, Email Address) 
     VALUES 
     ('$name','$user','$pass','$email')"; 
    $res = mysqli_query($con, $flp)or die("Can't insert to table"); 
    if ($res) { 
     $complete = "Registered successfully please log in to continue"; 
    } else { 
     echo "error"; 
    }  
} 

一切工作正常,直到它到达行开始$ FLP =“INSERT INTO ...

谁能帮助帮我调试代码,也请不要链接到已写入代码中,我希望能够使用这个代码

编辑:

我改了行故意造成的错误,所以我知道PHP是阅读的行,它确实给我行启动的语法错误$ res = mysqli _...

“解析错误:语法错误,意想不到 '$水库'(T_VARIABLE)在C:\ XamppNew \ htdocs中\上线85的网站\ regusr.php”

我除去分号在的端部插入行只是为了得到错误。

编辑:

我已经成功地将问题隔离到if语句的开始。似乎该行不会将每个错误视为没有内容。但是,如果存在错误,它将显示在窗体旁边的页面上,并且不显示此类错误。

+1

你什么错误? –

+1

**危险**:您**易受[SQL注入攻击](http://bobby-tables.com/)**。 – Quentin

+0

列名称“电子邮件地址”之间有空格。它是否正确? –

回答

0

试试这个:

<?php 

//if ($fnameError = "" && $emailError = "" && $userError = "" && $passError = "" && $cpassError = "" && $tickError = "") 
//{ 
    // Connect to DB 
    $mysqli = new mysqli("localhost", "root", "", "login"); 
    if ($mysqli->connect_errno) { 
     printf("Connect failed: %s\n", $mysqli->connect_error); 
     exit(); 
    } 

    // Parse Input 
    $user = $mysqli->real_escape_string($_POST['user']); 
    $pass = $mysqli->real_escape_string($_POST['pass']); 
    $pwd = md5(crypt('$pass', '$user')); 
    $name = $mysqli->real_escape_string($_POST['fname']); 
    $email = $mysqli->real_escape_string($_POST['email']); 

    // Insert Record 
    if ($mysqli->query("INSERT INTO users (`Name`, `Username`, `Password`, `Email Address`) VALUES ('$name', '$user', '$pwd', '$email')")) { 
     printf ("New user has id %d.\n", $mysqli->insert_id); 
    } else { 
     printf("Failed to insert row: %s\n", $mysqli->error); 
    } 

    // Close DB Connection 
    $mysqli->close(); 
//} 

?> 
+0

还是什么都没有。该检查阻止它,但它不应该是因为错误是空的。 – Georgewb13

+0

在'if'块之上加上这个:'var_dump($ fnameError);后续代码var_dump($ emailError);后续代码var_dump($ userError);后续代码var_dump($ passError);后续代码var_dump($ cpassError); var_dump($ tickError);'输出是什么? – Latheesan

+0

我在开始时注释了if语句,它给了我“插入行失败”。所以它检查它。 – Georgewb13

0

你需要引用(带反引号)你的列名Email Address,因为它有一个空格。

+0

这不是在数据库提交方面仍然没有从PHP中获得任何东西,数据库中也没有显示任何东西。 – Georgewb13

0

Email Address字段中使用反引号,因为它有空间。

$flp="INSERT INTO $tblname (`Name`, `Username`, `Password`, `Email Address`) 
+0

我复制了整个行,​​但它仍然没有给我任何反馈,没有错误,没有提交,似乎它忽略了代码 – Georgewb13

+0

检查是否正在执行块# –

+0

该块执行,因为我可以在块内回显密码,从头开始,密码已停止回显 – Georgewb13

0

试试这个.......... $ FLP = “INSERT INTO $ tblname(姓名,用户名,密码)移转 VALUES ('”。$名字'。“, ' “$用户。”', ' “$通。”',“” $电子邮件。 ”')“;

+0

电子邮件地址应该有一个空间,所以它不会工作。 – Georgewb13