注意,你也許可以做到這樣的事情在你最喜歡的mysql
前端,我用SQLyog的,你可以做到這一點與「數據搜索」的工具,我當然,像mysql工作臺這樣的其他軟件也有類似的選擇。
無論如何,你可以讓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
}
僅供參考,這很可能會謀殺你的表現作爲表大小的增加。 – castis
我認爲這將是一個有用的查詢,它將不得不在具有中等表大小的多個表中使用。 – Kelsey
我相對確定你正在尋找的東西不存在。它的用處僅限於少數邊緣情況,在生產中運行類似這樣的東西並不是一個好主意。您可以讓PHP爲您生成sql查詢並轉到該路線。這就是說,我不是DBA。 – castis