0

这应该很容易,但我无法让它工作。这个想法是寻找从表单中发布的电子邮件地址。如果它存在,则回显某些内容,如果不存在,则回显其他内容。

我的代码是:

<?php
//MySQL Database Connect
mysql_connect("localhost", "********", "**********") 
  or die("Unable to connect to MySQL");

//get data from form 
$email=$_POST['email'];

//ask the database for coincidences
 $result = mysql_query("SELECT email FROM pressmails WHERE email='.$email.'"); 
 $num_rows = mysql_num_rows($result); 


 if($num_rows < 0){ 
    echo "The user is registered";
} else { 
    echo "The user is not registered";
}  

 //Close database connection
 mysql_close();
 ?>
4

4 回答 4

3

您没有正确连接字符串。

$result = mysql_query("SELECT email FROM pressmails WHERE email='.$email.'");

应该

$result = mysql_query("SELECT email FROM pressmails WHERE email='".$email."'"); 
于 2013-01-22T12:34:08.020 回答
1

您应该使用右引号来结束字符串(如果您开始使用字符串,"您也必须使用结束字符串",与 相同')。

并且不要忘记使用mysql_real_escape_string,否则脚本不安全。

脚本会变成这样:

// save the query in a variable, so we can echo it to debug when it doesn't work as expected
$sql = "SELECT email FROM pressmails WHERE email='".mysql_real_escape_string($email)."'";
$result = mysql_query($sql);
于 2013-01-22T12:34:34.490 回答
1

您不需要连接标识符,因为包装文字"会自动将变量解析为字符串:

$result = mysql_query("SELECT email FROM pressmails WHERE email='$email'"); 

你应该小心,请注意。执行上述操作代表了一个重大的 SQL 注入漏洞。您应该考虑至少进行消毒$email。另请参阅我对mysql_*PHP 中的函数的评论。

文档

此扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:

mysqli_close() PDO:将NULL的值赋给PDO对象

于 2013-01-22T12:35:30.273 回答
0

(假设您纠正了语法错误)这不是倒退的逻辑吗?

if($num_rows < 0){ 
 echo "The user is registered";
} else { 
echo "The user is not registered";
}  

如果用户已注册,他们的电子邮件在数据库中并且查询返回一行或多行

尝试

if($num_rows){ 
   echo "The user is registered";
} else { 
  echo "The user is not registered";
}  
于 2013-01-22T12:37:20.193 回答