首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么数据不会存储在我的数据库中?错误地说“您的SQL语法中有一个错误;...”

为什么数据不会存储在我的数据库中?错误地说“您的SQL语法中有一个错误;...”
EN

Stack Overflow用户
提问于 2013-03-26 00:38:56
回答 1查看 85关注 0票数 0

对不起,我是新来php的,所以请耐心等待。我正在创建一个用户界面,当我注册时,它会显示我已注册,但它不会将数据存储到数据库中。同样,每次我注册时,它都会出现错误“您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以了解在第1行‘testing101’附近使用的正确语法。”谁能帮帮我!

代码语言:javascript
复制
   <?PHP

$uname = "";
$pword = "";
$errorMessage = "";
$num_rows = 0;

function quote_smart($value, $handle) {

   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }

   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value, $handle) . "'";
   }
   return $value;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST'){


    $uname = $_POST['username'];
    $pword = $_POST['password'];

    $uname = htmlspecialchars($uname);
    $pword = htmlspecialchars($pword);


    $uLength = strlen($uname);
    $pLength = strlen($pword);

    if ($uLength >= 10 && $uLength <= 20) {
        $errorMessage = "";
    }
    else {
        $errorMessage = $errorMessage . "Username must be between 10 and 20 characters" . "<BR>";
    }

    if ($pLength >= 8 && $pLength <= 16) {
        $errorMessage = "";
    }
    else {
        $errorMessage = $errorMessage . "Password must be between 8 and 16 characters" . "<BR>";
    }


    if ($errorMessage == "") {

    $user_name = "root";
    $pass_word = "";
    $database = "user authentication";
    $server = "127.0.0.1";

    $db_handle = mysql_connect($server, $user_name, $pass_word);
    $db_found = mysql_select_db($database, $db_handle);

    if ($db_found) {

        $uname = quote_smart($uname, $db_handle);
        $pword = quote_smart($pword, $db_handle);




        $SQL = "SELECT * FROM login WHERE USERNAME = '".$uname."'";
        $result = mysql_query($SQL)or die(mysql_error());
        $num_rows = mysql_num_rows($result);

        if ($num_rows > 0) {
            $errorMessage = "Username already taken";
        }

        else {


    $SQL = "INSERT INTO login (USERNAME, PASSWORD) VALUES ('{$uname}', MD5('{$pword}'))"; 
            $result = mysql_query($SQL);

            mysql_close($db_handle);

        //=================================================================================
        //  START THE SESSION AND PUT SOMETHING INTO THE SESSION VARIABLE CALLED login
        //  SEND USER TO A DIFFERENT PAGE AFTER SIGN UP
        //=================================================================================

            session_start();
            $_SESSION['login'] = "1";

            header ("Location: page1.php");

        }

    }
    else {
        $errorMessage = "Database Not Found";
    }




    }

}


?>

    <html>
    <head>
    <title>Basic Login Script</title>


    </head>
    <body>


<FORM NAME ="form1" METHOD ="POST" ACTION ="signup.php">

Username: <INPUT TYPE = 'TEXT' Name ='username'  value="<?PHP print $uname;?>" maxlength="20">
Password: <INPUT TYPE = 'TEXT' Name ='password'  value="<?PHP print $pword;?>" maxlength="16">

<P>
<INPUT TYPE = "Submit" Name = "Submit1"  VALUE = "Register">


</FORM>
<P>

<?PHP print $errorMessage;?>

    </body>
    </html>
EN

回答 1

Stack Overflow用户

发布于 2013-03-26 00:49:07

你在给你的文本加双引号:

在您的smart_quote()函数中添加一组引号。

在您的实际查询中添加了一组引号,因此您将生成:

代码语言:javascript
复制
INSERT .... VALUES (''$uname'', ''$password'');

如果您在处理查询调用时遇到了适当的错误,您将看到以下内容:

代码语言:javascript
复制
$result = mysql_query($sql) or die(mysql_error());
                           ^^^^^^^^^^^^^^^^^^^^^^
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15620143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档