-1

Web サイトで新しいユーザーを登録するためにフォームを送信すると、フォームは送信されますが、データベースには送信されず、次のようなエラーが表示されます。

無効なクエリ: SQL 構文にエラーがあります。2 行目の '####, 800800800)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください クエリ全体: mysql_query

ここに私のMySQLクエリがあります:

    $fname    =   $_POST['fnamein'];
    $lname    =   $_POST['lnamein'];
    $email    =   $_POST['emailin'];
    $phone    =   $_POST['phonein'];
    $password =   sha1($_POST['passwordin']);

    $query='INSERT INTO directoryi (Fname, Lname, password, email, phone) 
    VALUES ('.$fname.', '.$lname.', '.$password.', '.$email.', '.$phone.')';
    $result = mysql_query($query);

    if (!$result) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . mysql_query;
        die($message);
    }

    echo '<h2>Thank you for registering!</h2>';

    mysql_free_result($result);
    mysql_close($dbconnect);
    ?>

そして私のHTMLフォーム:

        <form action="register.php" method='post'>
            <input type="text" class="input-small" style="width: 46%;" name="fnamein" placeholder="First Name">
            <input type="text" class="input-small" style="width: 46%;" name="lnamein" placeholder="Last Name">
            <input type="text" class="input" style="width: 46%;" name="emailin" placeholder="Email">
            <input type="text" class="input" style="width: 46%;" name="phonein" placeholder="ex. 7171234567">
            <input type="password" class="input" style="width: 96%;" name="passwordin" placeholder="Password">
            <button type="submit" class="btn">Register</button>
        </form>        
4

2 に答える 2

1

フィールドのデータ型によっては、挿入値を一重引用符で囲んでいないと思います。これを試して:

$query="INSERT INTO directoryi (Fname, Lname, password, email, phone) 
VALUES ('$fname', '$lname', '$password', '$email', '$phone')";

これは、すべてのフィールドが文字列型フィールド (varchar など) であると想定していることに注意してください。

また、重大な SQL インジェクションの脆弱性がmysql_*あり、非推奨の関数を使用しています。準備済みステートメントで mysqli または PDO を使用する方法を学ぶことを強くお勧めします。

于 2013-04-24T00:18:17.443 に答える