这应该很容易,但我无法使其发挥作用。 我们的想法是寻找从表单发布的电子邮件地址。如果它存在回声,如果不回应别的东西。
我的代码是:
<?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();
?>
答案 0 :(得分:3)
您没有正确连接字符串。
$result = mysql_query("SELECT email FROM pressmails WHERE email='.$email.'");
应该是
$result = mysql_query("SELECT email FROM pressmails WHERE email='".$email."'");
答案 1 :(得分: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);
答案 2 :(得分:1)
您不需要连接标识符,因为在"
中包装文字会自动将变量解析为字符串:
$result = mysql_query("SELECT email FROM pressmails WHERE email='$email'");
请注意,请注意。执行上述操作代表了一个重要的SQL注入漏洞。您应该考虑至少清理$email
。另请参阅我对PHP中mysql_*
函数的评论。
来自Docs:
自PHP 5.5.0起,此扩展程序已弃用,并将在中删除 未来。相反,应该使用MySQLi或PDO_MySQL扩展。 另请参阅MySQL:选择API指南和相关常见问题解答以获取更多信息 信息。该功能的替代方案包括:
mysqli_close()PDO:将NULL值赋给PDO对象
答案 3 :(得分: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";
}