Php sql检查是否存在返回bool false的重复项?

Php sql检查是否存在返回bool false的重复项?,php,mysql,Php,Mysql,我有一个php/sql函数,用于在数据库中存储值,我想使用if语句检查列中是否已经存在值 到目前为止,我的代码如下: <?php $fbname = $_POST['fbname']; $fbemail = $_POST['fbemail']; $checkdupe = "SELECT Email from userregtable where Email=$fbemail"; if (mysql_num_rows($checkdupe) >= 1) { echo "no

我有一个php/sql函数,用于在数据库中存储值,我想使用if语句检查列中是否已经存在值

到目前为止,我的代码如下:

<?php

$fbname = $_POST['fbname'];
$fbemail = $_POST['fbemail'];
$checkdupe = "SELECT Email from userregtable where Email=$fbemail";

if (mysql_num_rows($checkdupe) >= 1) {
    echo "no!";
} else {
    $sql = "INSERT INTO userregtable (Name, Email) VALUES ('$fbname', '$fbemail') ";
    mysql_query($sql);
}

<代码> 首先,请考虑使用<代码> MySqLi<,或者更好地查看PDO。

也就是说,您需要实际查询
SELECT
语句。尝试更改
$checkdupe
变量以匹配以下内容:

$checkdupe=mysql_查询(“选择…”)


我没有做任何测试,但这应该可以解决您的问题。

您忘了先调用
mysql\u query
。在select语句中,
$fbeail
附近的引号也丢失了:

<?php
$checkdupe = mysql_query("SELECT Email from userregtable where Email='$fbemail'");
仅当不存在约束冲突时插入“忽略工时”

另外,请使用
mysql\u real\u Escape\u字符串对数据进行转义,以防止SQL注入攻击

<?php

$checkdupe = mysql_query('SELECT Email from userregtable where Email="' . mysql_real_escape_string($fbemail) . '"');
mysql_query('
  INSERT INTO userregtable (Name, Email) 
  VALUES (
  "' . mysql_real_escape_string($fbname) . '", 
  "' . mysql_real_escape_string($fbemail) . '"
  )
');

缺少mysql\u查询。请参阅[好的,我在上面提到的查询中添加了,但是现在我收到一条消息,说mysql_num_rows期望参数1是资源,布尔值在中给出。知道为什么吗?@BenLiger,检查我的回答好的,我在上面提到的查询中添加了,但是现在我收到一条消息,说mysql_num_rows期望参数1是资源,布尔值在中给出。any知道为什么吗?如果我从facebook API获取变量,我甚至需要一个真正的转义字符串吗?你在
$fbemail
附近添加了引号吗?db连接可以吗?是的,当表单以这种方式查询时,你需要转义数据。这是经验法则。是的db连接很好。它实际上每次都会写入条目。是的,我也在q中添加了转义数据uotesTry使用
调试sql取决于db用户权限,可以插入但不能选择!修改了权限,效果很好
<?php

$checkdupe = mysql_query('SELECT Email from userregtable where Email="' . mysql_real_escape_string($fbemail) . '"');
mysql_query('
  INSERT INTO userregtable (Name, Email) 
  VALUES (
  "' . mysql_real_escape_string($fbname) . '", 
  "' . mysql_real_escape_string($fbemail) . '"
  )
');
<?php echo mysql_errno() . ": " . mysql_error() . "\n";