我的数据库中有 2 个表,它们通过名为 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;
}
}
}
在我的 View 文件中我有这个:
$classTest = new test();
$exists = $classTest->dataExists();
if ($exists == true) {
echo '';
}
最佳答案
当前您正在检查是否 mysqli_stmt
对象(从 prepare()
返回)等于一个数字。您认为这种比较应该如何进行?
您可以通过 num_rows
来完成此操作,这非常直接地取自 the manual
public function dataExists () {
//...
if ($statement = $db->prepare("SELECT * FROM `data` WHERE `id`=?")) {
$statement->bind_param("i", $user);
$statement->execute();
//...
return ($statement->num_rows > 0);
}
}
由于您正在使用类,因此您可能希望将查询结果存储在某处 - 询问它们的存在意味着您可能想要使用它们。
我将 return
语句缩短为
if ($a==$b) {
return true;
} else {
return false;
}
等于
return ($a==$b);
关于php - 如何检查表列中是否存在特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20595822/