INSERT INTO电子邮件地址中的MySQL语法错误

时间:2018-07-01 03:31:39

标签: php mysql

我无法在MySQL数据库中插入电子邮件地址。我遇到了可怕的1064错误。

创建新用户时出错您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行至1064行的'@ email.com,password,20)'附近使用

所以我猜想我需要在email变量中转义@吗?但是我似乎没有做任何事情取悦玛丽亚。在PHPMyAdmin中生成查询也没有帮助。 任何建议都将被接受。

// update SQL
    $sql2 = "INSERT INTO members (username, email, password, balance) VALUES ($new_player, $new_email, $new_password, 20)";
    if ($db->query($sql2) == TRUE) {
            echo "** New User Created **<BR>";
                } else {
                echo "Error creating new user " . $db->error." -- ". $db->errno ."<BR>";
    }

1 个答案:

答案 0 :(得分:0)

更改您的值以使用引号应解决此特定问题。但是,为了防止SQL注入,您应该使用准备好的语句。准备好的语句将如下所示:

  <!-- Start Scripts -->
  <script src="jquery/dist/jquery.js"></script>
  <script src="scripts/bootstrap.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
  <script src="scripts/jquery.fullPage.min.js"></script>
  <script src="scripts/modernizr.js"></script>
  <script src="scripts/main.js"></script>
  <script src="scripts/surfboard.js"></script>

如果您确定要使用当前的设置是因为您处于测试环境中,或者特别需要它,则将查询更改为此即可:

$sql2 = INSERT INTO members (username, email, password, balance) VALUES (?,?,?,20)";
$pStmt = $db->prepare($sql2);
$pStmt->bind_param("sss", $username,$email, $password);
$pStmt->execute();