-3

我在我的网站上有以下 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

这是您创建的脚本的更好版本,因为您的脚本 100% 对 SQL 注入开放,甚至不是传统的编码方式,这更安全,但如果您需要安全,那么我建议您从这里了解 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

注册表不应被单引号 ' 包围,而应被撇号 `

所以

    $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 回答