首页 > 解决方案 > 使用 php 从数据库中打印数据,该数据库在其列中有一项

问题描述

我将尝试更好地解释我在寻找什么。

我想检查 mysql 数据库中在其列中有一项的所有行。

假设我有 3 列的数据库:id,name,tags

这就是我的数据库的外观

和变量$interests = "nature,sky,tehnology"

我想搜索我的数据库的所有行,如果在列标签中至少有一个匹配的 $interests 单词,则返回 true

例子:

If variable is: $interests = "nature,sky,tehnology,math;"
and column tags has value of nature,sky,tehnology How can I use SQL to check if there are things that are in both variable $interests and in column tags

因此,示例的结果将是正确的,因为变量和列中都有 3 个东西:自然、天空、技术

标签: phpmysqlsql

解决方案



您可以检查是否有这样的匹配:(OOP)

$sql = $dbconnection->query('SELECT * FROM table_name WHERE interests = $interests');
if($sql->num_rows > 0) {
// do whatever you want to do when there is a match
} else {
echo 'No match has been found!';
exit();
}

程序风格:

$sql = mysqli_query($dbconnection, 'SELECT * FROM table_name WHERE interests  = '.$interests);
if(mysqli_num_rows($sql) > 0) {
// do whatever you want to do when there is a match
} else {
echo 'No match has been found!';
}

我不知道你是否熟悉准备好的语句,但我建议你使用它们。
OOP 和准备好的语句:

$sql = $dbconnection->prepare('SELECT * FROM table_name WHERE interests = ?');
$sql->bind_param('s', $interests);
$sql->execute();
$sql->store_result();
if($sql->num_rows > 0) {
// do whatever you want to do when there is a match
} else {
echo 'No match has been found!';
exit();
}

我还建议您使用 MySqli 而不是 MySql,因为 PHP7 不推荐使用 MySql,并且 MySqli 确实支持 Prepared Statements 而 MySql 不支持。(我什么时候应该使用 MySQLi 而不是 MySQL?
希望这对您有所帮助。

编辑
您需要获取所有行。

$sql = $dbconnection->query('SELECT * FROM table_name);
$result = $sql->get_result();
$row = $result->fetch(MYSQLI_ASSOC);
$result->free_result();

然后在$row变量中搜索匹配项。
我建议您使用数组 for $interests,因为在索引中搜索更容易。(您可以使用 array_search / in_array)


推荐阅读