Php sql检查是否存在返回bool false的重复项?
我有一个php/sql函数,用于在数据库中存储值,我想使用if语句检查列中是否已经存在值 到目前为止,我的代码如下: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
$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";