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