Php 为什么赢了';我的代码是否填充mysql表中的一行?

Php 为什么赢了';我的代码是否填充mysql表中的一行?,php,Php,我试图允许用户注册,代码返回时没有任何错误,但我的数据库中没有显示任何内容。我一辈子都找不到原因。我不觉得有什么不对,但也许你们中的一个能帮我 以下是完整的php文件: <?php require "includes/constants.php"; $conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); if(isset($_POST['username'])) { $username = $_POST['u

我试图允许用户注册,代码返回时没有任何错误,但我的数据库中没有显示任何内容。我一辈子都找不到原因。我不觉得有什么不对,但也许你们中的一个能帮我

以下是完整的php文件:

<?php

require "includes/constants.php";

$conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);

if(isset($_POST['username'])) {
    $username = $_POST['username'];
    $uLength = strlen($username);
}

if ($uLength >= 4 && $uLength <= 15)
{
}
else
{
    die("Your username must be between 4 and 15 characters.");
}

if($username == "")
{
    die("You didn't tell me what to call you! Please enter a username.");
}

if(isset($_POST['pwd'])) {
    $pwd = $_POST['pwd'];
    $pLength = strlen($pwd);
}

if ($pLength >= 6 && $pLength <= 41)
{
}
else
{
    die("Password must be between 6 and 41 characters.");
}

if($pwd == "")
{
    die("Please enter a password and verify it.");
}

if(isset($_POST['pwd_conf'])) {
    $pwd_conf = $_POST['pwd_conf'];
}
if($pwd != $pwd_conf)
{
    die("Ouch! Your passwords don't match! Try again.");
}

if(isset($_POST['email'])) {
    $email = $_POST['email'];
    $email1 = "@";
    $email_check = strpos($email,$email1);
}

$user_check = "SELECT username FROM users WHERE username='$username'";
if($stmt = mysqli_prepare($conn,$user_check)) {
    mysqli_stmt_execute($stmt);

    if(mysqli_stmt_num_rows($stmt) > 0){
        die("Username is already in use!<br>");
    }
}

$query = "INSERT INTO users (username, password, email) VALUES ('$username', '$pwd', '$email')";

if(!$query)
{
    die("Unfortunately, we can't sign you up because we have problems: ".mysql_error());
}
else
{
    header("Location: login.php");
}

?>    

您构建了一个查询字符串,但从未执行过它

1. $sql = "INSERT ..."
2. ???
3. come to SO to ask why
还要注意,您混合了mysqli和mysql调用(特别是在定义INSERT查询之后的mysql\u错误调用)。这两个库不能互换,也不能相互兼容


还要注意的是,当您使用准备好的语句(耶!)时,您完全没有正确地使用它们(嘘声),并且容易受到攻击。

您需要在if(!$query)之前使用mysql_query()函数 别的

$result = mysql_query($query);
if(!$result){

您还没有查询数据库,只是用INSERT语句填充了
$query
变量。您仍然需要执行该查询。我假设您在运行代码时没有打印出任何错误?编辑:@SetSailMedia一针见血。您将对SQL注入敞开大门。请了解如何使用param量化查询,最好使用PDO模块,以保护您的web应用程序。有一些示例可以帮助您入门。SetSailMedia似乎是正确的。@查询只是一个包含查询的字符串。它也必须执行。@AndyLester谢谢您。我感谢您在这方面的输入。-1感谢您建议使用过时的
mysql\u查询()
函数,而不是OP已经在使用的更好的
mysqli
API。