带有PHP变量的mysql_query

时间:2013-01-22 12:32:29

标签: php mysql

这应该很容易,但我无法使其发挥作用。 我们的想法是寻找从表单发布的电子邮件地址。如果它存在回声,如果不回应别的东西。

我的代码是:

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

答案 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";
}