首页 文章

简单的表查询语法错误?

提问于
浏览
-1

我希望这里有人可以帮我看看这个错误来自哪里 .

我有一个包含两个字段的表单:电子邮件和密码 . 表单的操作将其带到应该的PHP页面

  • 开始一个会话

  • 通过mysql连接到数据库

  • 运行查询并在表格中选择一行,其中电子邮件字段与表单中提交的电子邮件类似 .

在这个阶段,它是不完整的,我只回显脚本末尾的一些字段,看它是否有效 .

我测试了它,并在最后一行出现意外的结束错误;我遗漏了一个支架 . 所以我虽然没有其他错误,但是当我再次测试它时我得到了这个错误:

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

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

这是php(动作)页面的代码:

<?php
session_start();
$_SESSION['sessionemail'] = $_POST['email'];
$_SESSION['sessionpassword'] = $_POST['password'];
$_SESSION['authuser'] = 0;

$dbhost = 'somewhere.com';
$dbuser = 'user';
$dbpass = 'pw';

$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'];
}
?>

我尝试删除前5行,但仍然有同样的错误 .

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

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

2 回答

  • 2

    您有SQL注入,在发送到MySQL数据库之前,始终将 mysql_real_escape_string() 应用于任何用户提交的或可能被篡改的数据 .

    请注意电子邮件变量周围的 ' .

    $email = mysql_real_escape_string($_POST['email']);
    
    $query = "
    SELECT name, smacker, surname, sex, age, nationality, email
    FROM employee
    WHERE email = '$email'
    ";
    
  • -1
    <?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'];
    }
    ?>
    

    尝试这个,应该工作

相关问题