-3

Web サイトに次の PHP コード/ファイルがありますが、なんらかの理由で、ユーザーが入力したレコードが必要に応じて mySQL データベース テーブルに挿入されません。これがなぜなのか誰か教えてもらえますか?

コードが完全に正しいと言える限り、なぜこれが起こっているのかわかりません...

助けてください...コードは以下です...

<html>
<head>
</head> 
<body>
<form action="register_development_file_1.php" method="post">
    Email:  <input type="text" name="email"><br />
    Date:   <input type="text" name="date"><br />
    Time:   <input type="text" name="time"><br />
        <input type="submit" name="submit">
</form>

    <?php
    if  (isset($_POST['submit']))
    {
        $con = mysql_connect("localhost","username","password");
        if (!$con)
        {
            die("Could not connect to the database: " . mysql_error());
        }

        mysql_select_db("wwwbrecs_BREC",$con);

   $sql = "INSERT INTO 'signups' ('signup_email_address', 'signup_date', 'signup_time') VALUES ('$_POST[email]','$_POST[date]','$_POST[time]')";

        mysql_query($sql,$con);

        mysql_close($con);
    }
    ?>
</body>
</html>
4

4 に答える 4

2

クエリに構文エラーがあります。テーブル名と列を引用符で囲まないでください。'少なくともバックティック ` を使用できます

INSERT INTO 'signups' ('signup_email_address', 'signup_date','signup_time')

する必要があります

INSERT INTO signups (signup_email_address, signup_date, signup _time) VALUES 

または

INSERT INTO `signups` (`signup_email_address`, `signup_date`, `signup _time`) VALUES 

値 (実際には整数列の整数ではない) のみを引用符で囲む必要があります'

mysql_次に、関数は非推奨であることを覚えておきたいので、mysqliまたはに切り替えることをお勧めします。PDO実際に のリスクがsql injectionあります。こちらをご覧くださいPHP で SQL インジェクションを防ぐにはどうすればよいですか? . リスクを回避するために、準備されたステートメントを使用する必要があります

于 2013-05-18T17:50:32.237 に答える
0

これは、あなたが作成したスクリプトのより良いバージョンです。あなたのスクリプトは SQL インジェクションに対して 100% オープンであり、実際には従来のコーディング方法でさえないため、これはより安全ですが、安全が必要な場合は、ここから PDO について学ぶことをお勧めします。

<?php
     if(isset($_POST['submit'])){
       mysql_connect("localhost","username","password") or die(mysql_error());
       mysql_select_db("wwwbrecs_BREC", $con) or die(mysql_query());

      $email = mysql_real_escape_string($_POST['email']);
      $date = mysql_real_escape_string($_POST['date'])
      $time = mysql_real_escape_string($_POST['time'])

       $sql = "INSERT INTO 
            signups ('signup_email_address', 'signup_date','signup_time') 
            VALUES  ('".$email."','".$date."','".$time."')";

        mysql_query($sql, $con) or die(mysql_error());

        mysql_close($con);
    }
于 2013-05-18T17:43:15.893 に答える
0

signups テーブルは、単一引用符 ' ではなくアポストロフィ ` で囲む必要があります

したがって

    $sql = "INSERT INTO 'signups' ('signup_email_address', 'signup_date',                          'signup_time') VALUES ('$_POST[email]','$_POST[date]','$_POST[time]')";

する必要があります

    $sql = "INSERT INTO `signups` ('signup_email_address', 'signup_date',                          'signup_time') VALUES ('$_POST[email]','$_POST[date]','$_POST[time]')";
于 2013-05-18T17:44:05.563 に答える
0
<?php
$sql = "
    INSERT INTO signups 
    (signup_email_address, signup_date, signup_time) 
    VALUES 
    ('" . mysql_real_escape_string($_POST['email']) . "','" . mysql_real_escape_string($_POST['date']) . "', '" . mysql_real_escape_string($_POST['time']) . "')";

これでうまくいくはずです。セキュリティも確認してください

于 2013-05-18T17:44:19.440 に答える