php - 使用 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 个东西:自然、天空、技术
解决方案
您可以检查是否有这样的匹配:(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)
推荐阅读
- typescript - 打字稿:从通用接口中省略属性
- java - 在java中实现链表的麻烦
- linux - 编译内核驱动程序和 .c 文件的单个 makefile
- laravel - Laravel 6 API 不会在日志中写入错误 500
- typescript - 打字稿 + JSDocs
- reactjs - GraphQL - Gatsby.js- React 组件。- 如何查询变量/参数?
- javascript - Paypal 智能按钮:获得点击按钮
- python - Python Turtle 图形在屏幕右侧和底部缺少像素
- android - 无法获取应用用户 Facebook 主页的链接
- sql - SQL子查询,内部查询