0

ユーザー登録を許可しようとしていますが、コードはエラーなしで返されますが、データベースには何も表示されません。私は一生、理由を見つけることができません。何も問題はないと思いますが、どなたか助けていただけないでしょうか。

完全な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");
}

?>    
4

2 に答える 2

1

クエリ文字列を作成しますが、実行することはありません...

1. $sql = "INSERT ..."
2. ???
3. come to SO to ask why

また、mysqli 呼び出しと mysql 呼び出しを混在させていることに注意してください (特に、INSERT クエリを定義した後の mysql_error 呼び出し..2 つのライブラリは互換性がなく、互いに互換性がありません。

また、準備済みステートメントを使用している間 (イェーイ!)、それらをまったく間違って使用していることにも注意してください (ブー ヒス)、SQL インジェクション攻撃に対して脆弱です。

于 2013-01-16T16:52:06.253 に答える
-1

if(!$query) の前に mysql_query() 関数を使用する必要があります

$result = mysql_query($query);
if(!$result){
于 2013-01-16T16:57:28.783 に答える