用php中的电子邮件地址进行SQL查询

时间:2016-08-31 10:14:37

标签: php mysql

我有一个小查询,如果服务器query_string在数据库中退出,则显示文本。 它适用于各种文本和mysql中的数字,而不是电子邮件地址。 例如,如果网址看起来像“example.com/query.php?test”那就可以了。 如果有像“example.com/query.php?test@gmail.com”这样的电子邮件,则无效。 我的数据库表类型是varchar(100)。

有什么想法吗?

    <?php

    $subscriber_email = ($_SERVER['QUERY_STRING']);

    mysql_connect("server", "user", "pswd") or die (mysql_error ());

    mysql_select_db("newsletter") or die(mysql_error());

    $sql = "SELECT * FROM `newsletter submit` WHERE ID='test@gmail.com'";
    $query = mysql_query($sql);

    echo mysql_error();

    echo (mysql_num_rows($query) == 0) ? 'NO' : 'YES';

    ?>

2 个答案:

答案 0 :(得分:0)

你应该escape输入:

$subscriber_email = mysql_escape_string($_SERVER['QUERY_STRING']);

使用非转义字符串会导致错误,导致无法执行查询。

此外,您应该考虑使用mysqli,不推荐使用mysql函数。

更新:我有点太快而忘了提及,你应该在参数的每一边加上引号:

$sql = "SELECT * FROM `newsletter submit` WHERE ID='$subscriber_email'";

答案 1 :(得分:0)

使用parse_url(),如下所示

$url = 'example.com/query.php?test@gmail.com';
$parm = parse_url($url);
echo $parm['query'];