【发布时间】:2017-05-02 17:06:05
【问题描述】:
我正在尝试使用 AJAX 创建一个强力搜索,它在 3 个不同的表中查找结果并在单个表中返回答案。我通过向我的数据库添加 3 个调用(每个表一个)来实现这一点,但我觉得这不是最佳的。
用户将在搜索字段中输入内容,而我使用 AJAX 将他们输入的内容发送到数据库。这个例子尽量简单,让大家更容易理解。
示例: 用户输入:测试。
AJAX 调用:
SELECT 'User' AS table, f_name AS `name`, city FROM people WHERE f_name LIKE '%test%';
SELECT 'Company' AS table, `name`, city FROM companies WHERE `name` LIKE '%test%';
SELECT 'Store' AS table, `name`, city FROM stores WHERE `name` LIKE '%test%';
我没有解释如何从 ajax 调用生成表格,因为这部分已经解决。我目前在 PHP 中所做的是:
$sql = SELECT .... FROM people ....;
$res = mysqli...
while($row = mysqli_fetch...) {
echo "<tr><td>{$row[table]}</td>...."
$sql = SELECT .... FROM companies ....;
$res = mysqli...
while($row = mysqli_fetch...) {
echo "<tr><td>{$row[table]}</td>...."
$sql = SELECT .... FROM stores ....;
$res = mysqli...
while($row = mysqli_fetch...) {
echo "<tr><td>{$row[table]}</td>...."
结果:
+--------------+-------+------+
| table | name | city |
+--------------+-------+------+
| User | test1 | 13 |
| User | test2 | 25 |
| Company | testc | 13 |
| Store | stest | 33 |
+--------------+-------+------+
有没有更简单的方法来实现这一点,使用更少的 HTTP 请求?也许使用视图?
【问题讨论】:
标签: php mysql ajax query-optimization