繁体   English   中英

PHP的MySQL语法错误

[英]MySQL syntax error with PHP

我遇到了MySQL 5.5.24和PHP 5.4.3的问题。 我有以下HTML / PHP代码:

<?php
function connect() {
    $con = mysql_connect( "127.0.0.1", "root", "" );
    if ( !$con ) {
        die( "Could not connect: " . mysql_error() );
    }
    mysql_select_db( "game" );    
}

function protect( $string ) {
    return mysql_real_escape_string( strip_tags( addslashes( $string ) ) );
}


if ( isset( $_POST[ 'register' ] ) ) {
    connect();
    $username = protect( $_POST[ 'username' ] );    
    $register = mysql_query( "SELECT 'id' FROM 'user' WHERE 'username'='$username'" ) or die( mysql_error() );
    if ( mysql_num_rows( $register ) > 0 ) {
        echo "That username is already in use!";
    } else {
        $ins = mysql_query( "INSERT INTO 'user' ('username') VALUES ('$username')" ) or die( mysql_error() );
        echo "You have registered!"; 
    } 
}
?>
<form action="register.php" method="POST">           
Username: <input type="text" name="username"/><br/>
<input type="submit" name="register" value="Register"/>
</form>

无论我输入什么,MySQL总会返回

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user' WHERE 'username'='XXX'' at line 1"

我用phpmyadmin检查了这些查询,它们工作得很好! 也没有连接问题。 我甚至尝试了简单的"SELECT * FROM 'user'" ,结果相同。 我只是没有得到任何响应,只是提到错误的SQL语法错误。

现在我检查了大量具有相同错误的文章,并且在每种情况下问题都是使用了PHP关键字或丢失/错误拼写变量名称和那种类型。 我现在检查了我的陈述一百次,我找不到任何错误。 我对PHP很陌生,所以也许我想念一些东西......

我最近的一个实验是改变数据库和存储引擎的整理,也没有结果......

希望你们看到我不能做到的! :-)

顺便说一下,我正在运行Windows 7和WAMP 2.2。

SELECT 'id' FROM 'user' WHERE 'username'

改变'` (反引号)

你在谈论表名和列名你应该使用反引号。 当你在谈论字符串(比如值)时,请使用单/双引号

在编写名称时应该使用反引号(而不是引号):

SELECT `id` FROM `user` WHERE `username` = 'foo'

引号用于字符串文字。

顺便说一句,你的protect功能是一个坏主意。 我建议你不要使用已弃用的mysql_*函数。 在mysqli或PDO中使用参数化查询。

有关

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM