简单的表查询语法错误?

时间:2011-09-25 14:16:29

标签: php mysql

我希望有人能帮我看看这个错误的来源。

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

的php页面
  1. 开始会话
  2. 通过mysql连接到数据库
  3. 运行查询并在表格中选择电子邮件字段与电子邮件类似的行 以表格提交。
  4. 在这个阶段它不完整,我只回显脚本末尾的一些字段 看看它是否有效。

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

      

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

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

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

    <?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 个答案:

答案 0 :(得分: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 :(得分:-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'];
}
?>

试试这个,应该工作

相关问题