2016-09-29 117 views
0

所以,当我想检索数据并检查它,即电子邮件已存在的回声已经注册。该部分工作正常,但插入相同的数据不起作用。我的条件是不正确的命令? (故意留出值的dbhostname ID PW变量)从数据库中检索数据,但不会插入?

$dbname = "hw2"; 

$link = mysqli_connect($dbhostname, $dbuserid, $dbpassword, $dbname); 

$firstname = $_POST["signup-firstname"]; 
$lastname = $_POST["signup-lastname"]; 
$email = $_POST["signup-email"]; 
$password = $_POST["signup-password"]; 
$repassword = $_POST["signup-repassword"]; 

if ($password != $repassword){ 
    echo "<br><h3>Passwords did not match. <br>Please try again.</h3>"; 
} 

else { 

$ret_email = "SELECT * FROM hw2 WHERE email = '$email'"; 
$result = mysqli_query($link, $ret_email); 
$num_rows = mysqli_num_rows($result); 

    if ($num_rows > 0){ 
    echo "This email is already registered."; 
    } 

    else{ 
    $insert_query = "INSERT INTO hw2 (firstname, lastname, email, password, repassword) VALUES ('$firstname', '$lastname', '$email', '$password', '$repassword')"; 
    echo "$insert_query"; 
    }  
} 
?> 
+1

你有意离开了实际mysqli_query()调用以及:) ?那里回来了什么?您是否使用数据库客户端尝试了查询(因为您正在回显该查询)以跳过PHP步骤?如果它在数据库客户端工作,它可能会告诉你的东西。 –

+1

也许这是我对mysqli知识的缺乏,但它看起来并不像执行'$ insert_query'。你将它定义为一个字符串,然后回显它,而不用运行它。 – Santi

+2

只是一个观察/警告 - 请注意你通过创建这样的动态sql命令打开自己的SQL注入攻击 - 考虑有人输入电子邮件值'; drop table hw2;'或类似的。 –

回答

1

您应该执行的查询不仅呼应它

mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age) 

if ($num_rows > 0){ 
echo "This email is already registered."; 
} 

else{ 
$insert_query = "INSERT INTO hw2 (firstname, lastname, email, password, repassword) VALUES ('$firstname', '$lastname', '$email', '$password', '$repassword')"; 

echo "$insert_query"; 
mysqli_query($link,$insert_query) 
} 
+0

非常感谢!这是我错过的。我没有意识到我没有执行查询。我以为我有,但我想我所做的只是执行查询并将其设置为等于一个变量。我猜我必须再次这样做? –

+0

@JSong每次你给一个var分配一个查询,你需要执行..以及如果我的回答是正确的,请标记为像这个链接http://meta.stackexchange.com/questions/5234/how-不接受-的回答工作 – scaisEdge