【问题标题】:PHP SQL INSERT INTO error messagePHP SQL INSERT INTO 错误信息
【发布时间】:2013-06-22 23:50:15
【问题描述】:

所以我正在做一些关于使用 php 创建在线表单的自学。

在我的第一页我有以下内容:

<!doctype html>
<html>
<head>
<title> Hi </title>
</head>
<body>
<form method="POST" action="Page2.php">
Username: <input type="text" name="username" >
Password: <input type="text" name="password" >
<input type="submit" name="submit" value="submit">
</body>
</html>

在我的第二页 (Page2.php):

 <?php


     if($_POST["submit"] == "submit")
     {
             $username=$_POST["username"];
             $password=$_POST["password"];

    $db = mysql_connect("localhost","root","root");
    if(!$db) die("Error connecting to MySQL database.");
    mysql_select_db("testdatabase" ,$db);

    $sql="INSERT INTO testdatabase_table ('username', 'password') VALUES (". PrepSQL($username) . "," . PrepSQL($password) . ")";

    $query=mysql_query($sql);
    echo $query;
    if(!$query)
    {
        echo "Failed".mysql_error();
    }


    exit();


    }
                function PrepSQL($value)
                {
                // Stripslashes
                if(get_magic_quotes_gpc()) 
                {
                   $value = stripslashes($value);
                }

                  // Quote
                  $value = "'" . mysql_real_escape_string($value) . "'";

                  return($value);
               }
?>

这是我得到的错误: 失败您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''username', 'password') VALUES (' ', ' ')' 附近使用正确的语法

任何快速的建议将不胜感激,谢谢。

【问题讨论】:

标签: php sql forms insert-into


【解决方案1】:

使用反引号来转义列名和表名,而不是引号

INSERT INTO testdatabase_table (`username`, `password`) VALUES ...

【讨论】:

  • 嘿,是的,我试过了,我把所有东西都改成了 mysqli 而不是 mysql,现在是 mysql_error();没有显示?
【解决方案2】:

省略列列表中的单引号:

INSERT INTO testdatabase_table (username, password) VALUES ...

【讨论】:

    【解决方案3】:

    这将适用于您的代码。

    $userSafe = PrepSQL($username);
    $passSafe = PrepSQL($password);
        $sql="INSERT INTO testdatabase_table ('username', 'password') VALUES ('$username','$password')";
    

    但你应该使用某种类型的 crypt/hash,我也测试过。

    $username = mysqli_real_escape_string($dbc, filter_var(($_POST['username']), FILTER_SANITIZE_STRING));
    $password = mysqli_real_escape_string($dbc, filter_var(($_POST['password']), FILTER_SANITIZE_STRING));
        $passhash = hash('sha512', $password);
    
    $sql="INSERT INTO testdatabase_table ('username', 'password') VALUES ('$username','$password')";
    

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 1970-01-01
      • 2011-06-18
      • 2020-09-02
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      相关资源
      最近更新 更多