Php 简单表查询语法错误?

Php 简单表查询语法错误?,php,mysql,Php,Mysql,我希望这里有人能帮我看看这个错误是从哪里来的 我有一个带有两个字段的表单:电子邮件和密码。表单的操作将它带到一个php页面,该页面应该 开课 通过mysql连接到数据库 运行查询并选择表中电子邮件字段与电子邮件字段类似的行 以表格形式提交 在这个阶段,它是不完整的,我只回显脚本末尾的一些字段 看看它是否有效 我测试了它,在最后一行出现了一个意外的结束错误;我遗漏了一个括号。所以我认为不会有其他错误,但当我再次测试时,我得到了这个错误: 您的SQL语法有错误;在第6行“@gmail.com”附近,

我希望这里有人能帮我看看这个错误是从哪里来的

我有一个带有两个字段的表单:电子邮件和密码。表单的操作将它带到一个php页面,该页面应该

  • 开课
  • 通过mysql连接到数据库
  • 运行查询并选择表中电子邮件字段与电子邮件字段类似的行 以表格形式提交
  • 在这个阶段,它是不完整的,我只回显脚本末尾的一些字段 看看它是否有效

    我测试了它,在最后一行出现了一个意外的结束错误;我遗漏了一个括号。所以我认为不会有其他错误,但当我再次测试时,我得到了这个错误:

    您的SQL语法有错误;在第6行“@gmail.com”附近,查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法

    @gmail.com是我提交的电子邮件的最后一部分

    以下是php(操作)页面的代码:

    
    
    我试着删除了前5行,但仍然得到了相同的错误

    不知何故,当php被解析时,浏览器读取电子邮件变量的内容,就好像它是我的php代码的一部分一样。至少我是这么想的,因为我收到的错误表明“@gmail.com”附近的语法有问题

    我希望有人能给我一个线索

    
    
    <?php
    session_start();
    $_SESSION['sessionemail'] = $_POST['email'];
    $_SESSION['sessionpassword'] = $_POST['password'];
    $_SESSION['authuser'] = 0;
    
    $dbhost = 'dedi147.cpt2.host-h.net';
    $dbuser = 'medreunten_1';
    $dbpass = 'AGqrVrs8';
    
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
    
    $dbname = 'medreunten_db1';
    mysql_select_db($dbname) or die(mysql_error($conn)); 
    
    
    $query = "SELECT name, smacker, surname, sex, age, nationality, email FROM employee WHERE email = '" . $_POST['email']."'";
    $result = mysql_query($query, $conn) or die (mysql_error($conn));
    extract(mysql_fetch_assoc($result));  
    
    
    while ($row = mysql_fetch_array($result)) {
    echo $row['name'];
    echo $row['surname'];
    echo $row['age'];
    }
    ?>
    

    尝试此方法,如果有效

    如果您有SQL注入,请在发送到mysql数据库之前,始终将
    mysql\u real\u escape\u string()
    应用于任何提交或可能篡改数据的用户

    注意电子邮件变量周围的

    $email = mysql_real_escape_string($_POST['email']);
    
    $query = "
    SELECT name, smacker, surname, sex, age, nationality, email
    FROM employee
    WHERE email = '$email'
    ";
    

    您可能需要执行类似于
    \''.mysql\u real\u escape\u string('$\u POST['email'])之类的操作注意single quotes.mysql\u real\u escape\u字符串不“清理”任何内容,与用户输入无关。我不是已经告诉过你了吗?他的错误和mysql\u real\u escape\u字符串都与注入无关。这是SQL语法。当然。并且用户可能不认为提交的电子邮件可能有
    ;毕竟,如果他们在做插入操作,他们不会在电子邮件中添加额外的
    。使用
    mysql\u real\u escape\u string()
    是一种实践,而不是一种要求。关键是在处理用户提交的内容时,要小心使用适当的方法。提出这一点并没有错。不过,不这样做可能会导致真正的问题。不,这是必要的。限制自己只逃避用户输入,最终会陷入深深的麻烦。我没有说“只逃避用户提交的信息”,你说了。此外,如果我手工输入或以其他方式拥有我知道不存在杂散的
    ,我就不需要使用
    mysql\u real\u escape\u string()
    。用户提交的或其他不安全的数据是可在查询中提交的数据类型的子集,但这是一个重要的数据,值得一提的是,查询中显然有一个数据<代码>:)
    $email = mysql_real_escape_string($_POST['email']);
    
    $query = "
    SELECT name, smacker, surname, sex, age, nationality, email
    FROM employee
    WHERE email = '$email'
    ";