Php 如何检查表列中是否存在特定值

Php 如何检查表列中是否存在特定值,php,mysql,sql,foreign-keys,Php,Mysql,Sql,Foreign Keys,我在一个数据库中有两个表,它们通过名为id的列具有外键关系。 因此,我有一个表示用户的id,它是一个表中用户表中的主键,我想检查用户在另一个表中是否有现有数据 因此,我希望针对另一个表中名为id的列运行id,如果该列中存在该id,则返回值true。 目前我没有得到任何错误,但是该方法没有返回任何值。所以我一定是做错了什么。。。感谢您的帮助 这是我在一个文件中拥有的类和方法: class test { public function dataExists () {

我在一个数据库中有两个表,它们通过名为id的列具有外键关系。 因此,我有一个表示用户的id,它是一个表中用户表中的主键,我想检查用户在另一个表中是否有现有数据

因此,我希望针对另一个表中名为id的列运行id,如果该列中存在该id,则返回值true。 目前我没有得到任何错误,但是该方法没有返回任何值。所以我一定是做错了什么。。。感谢您的帮助

这是我在一个文件中拥有的类和方法:

class test {

    public function dataExists ()
        {
            $db = Database::getInstance();
            $classUser = new user();
            $userId = $classUser->getUserData($_SESSION['id']);
            $user = $userId['id'];

            $query = $db->prepare("`id` SELECT * FROM `data`");

            if ($user == $query)
            {
                return true;
            } else {
                return false;
            }
        }
}
在我的视图文件中,我有以下内容:

$classTest = new test();
$exists = $classTest->dataExists();

if ($exists == true) {

echo '';

}

当前,您正在检查从返回的对象是否等于一个数字。你认为这种比较应该如何运作

您可以通过num_行来实现这一点,这是从

由于您使用的是类,您可能希望将查询结果存储在某个位置—询问它们的存在意味着您可能希望使用它们

我将返回语句缩短为

if ($a==$b) {
    return true;
} else {
    return false;
}
等于

return ($a==$b);

为什么不直接使用查询语句呢

SELECT count(*) FROM `data` where `id` = ?
然后测试返回的值


这样做的好处是只返回与查询匹配的记录数,而不是匹配并返回与查询匹配的所有记录。如果第二个表中有50000条记录匹配,那么少量记录也可以,但您可能不希望为了发现其中有50000条而将所有记录都提取出来

你知道现在你在比较两个不同的物体吗?嗨,你能详细解释一下吗?谢谢你的回答。我明白你的意思,但我不明白回报声明。。。如果用户有与id匹配的现有数据,我需要返回true或false。我应该使用这个return$语句->num_rows>0;或者不是?我也在使用PDO而不是mysqli!谢谢你的帮助。我使用fetchAll和count通过PDO找到了答案,然后将结果与您的答案进行了比较。这就是我在最后一段中的意思。num_rows>0是一个比较,因此它要么为真,要么为假。当处理比较时,您可以直接返回它们,您将得到与使用ifnum_rows>0{return TRUE;}或者{return FALSE;}相同的结果。这看起来很像ORM,尽管不知道您的意图/代码的其余部分很难说-也许您应该研究一下以前是如何处理这个主题的。我认为所有主要的PHP框架都以这样或那样的方式提供它们
SELECT count(*) FROM `data` where `id` = ?