我有一个小查询,如果服务器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';
?>
答案 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'];