是否可以在 PHP 查询中通过 MySQL table 搜索所有列,而无需输入每个列名?
Is it possible to search all columns through MySQL table in PHP query, without typing out each column name?
我问这个是因为我正在寻找 MySQL 的 PHP 查询,如下所示:
SELECT * FROM users WHERE ALL_COLUMNS LIKE '%" . $search . "%'
是否存在这样的查询?还是我必须像这样输入查询:
SELECT * FROM users
WHERE
user_email LIKE '%" . $search. "%'
OR user_name LIKE '%" . $search. "%'
OR first_name LIKE '%" . $search. "%' OR [...]
请注意,您可能可以在您最喜欢的 mysql
前端实现类似的功能,我使用 sqlyog,您可以使用 "data search" 工具来实现,我相信其他软件 mysql workbench 有类似的选项。
无论如何,您可以让 php 为您构建查询。通过查询 information_schema
将所有列放入数组中,然后用每个列名称创建一个字符串,如
"columnName LIKE '%$search%'"
然后 implode
它在 " OR "
上,像这样:
//what is the search?
$search = "something";
//get all the columns
$columns = mysqli_query("SELECT
COLUMN_NAME
FROM
information_schema.COLUMNS
WHERE TABLE_NAME = 'users'
AND TABLE_SCHEMA = 'yourDatabaseName' ");
//put each like clause in an array
$queryLikes = array();
while ($column = mysqli_fetch_assoc($columns)) {
$queryLikes[] = $column['COLUMN_NAME'] . " LIKE '%$search%'";
}
$query = "SELECT * FROM users WHERE " . implode(" OR ", $queryLikes);
echo $query; //should look like this:
//SELECT * FROM users WHERE column1 LIKE '%something%' OR column2 LIKE '%something%' OR column3 LIKE '%something%' OR ...
//so then
$users=mysqli_query($query);
while ($user = mysqli_fetch_assoc($users)) {
//do stuff with $user
}
很简单:
只需遍历 table 中的所有列并检查它们是否有您想要的值。
此示例搜索标题为 "column"
的列
$qry= mysql_query("select * from $tblName order by id");
while($row = mysql_fetch_assoc($qry)){
if($searchItem == $row['column']){
echo "Match found!";
break;
}
}
我问这个是因为我正在寻找 MySQL 的 PHP 查询,如下所示:
SELECT * FROM users WHERE ALL_COLUMNS LIKE '%" . $search . "%'
是否存在这样的查询?还是我必须像这样输入查询:
SELECT * FROM users
WHERE
user_email LIKE '%" . $search. "%'
OR user_name LIKE '%" . $search. "%'
OR first_name LIKE '%" . $search. "%' OR [...]
请注意,您可能可以在您最喜欢的 mysql
前端实现类似的功能,我使用 sqlyog,您可以使用 "data search" 工具来实现,我相信其他软件 mysql workbench 有类似的选项。
无论如何,您可以让 php 为您构建查询。通过查询 information_schema
将所有列放入数组中,然后用每个列名称创建一个字符串,如
"columnName LIKE '%$search%'"
然后 implode
它在 " OR "
上,像这样:
//what is the search?
$search = "something";
//get all the columns
$columns = mysqli_query("SELECT
COLUMN_NAME
FROM
information_schema.COLUMNS
WHERE TABLE_NAME = 'users'
AND TABLE_SCHEMA = 'yourDatabaseName' ");
//put each like clause in an array
$queryLikes = array();
while ($column = mysqli_fetch_assoc($columns)) {
$queryLikes[] = $column['COLUMN_NAME'] . " LIKE '%$search%'";
}
$query = "SELECT * FROM users WHERE " . implode(" OR ", $queryLikes);
echo $query; //should look like this:
//SELECT * FROM users WHERE column1 LIKE '%something%' OR column2 LIKE '%something%' OR column3 LIKE '%something%' OR ...
//so then
$users=mysqli_query($query);
while ($user = mysqli_fetch_assoc($users)) {
//do stuff with $user
}
很简单: 只需遍历 table 中的所有列并检查它们是否有您想要的值。
此示例搜索标题为 "column"
的列$qry= mysql_query("select * from $tblName order by id");
while($row = mysql_fetch_assoc($qry)){
if($searchItem == $row['column']){
echo "Match found!";
break;
}
}