Php 搜索多个mysql表

Php 搜索多个mysql表,php,mysql,Php,Mysql,我现在有这个代码 switch($search_topic) { case 'Title': $stmt = $dbh->prepare("SELECT game_id, title, platform_name, author_name, price FROM games

我现在有这个代码

            switch($search_topic)
            {
                case 'Title':
                    $stmt = $dbh->prepare("SELECT game_id, title, platform_name, author_name, price
                                            FROM games 
                                            WHERE title 
                                            LIKE :search_term");
                break;

                case 'Platform':
                    $stmt = $dbh->prepare("SELECT game_id, title, platform_name, author_name, price
                                            FROM games 
                                            INNER JOIN platforms ON games.platform_id = author.platform_id
                                            WHERE platform_name LIKE :search_term");
                break;
            }
search_topic变量来自上一个网页上的列表框,标题搜索工作正常,因为它只搜索一个MySQL表。平台搜索有点困难,因为我正在尝试搜索多个表,如果这有意义的话

games表有一个名为“platform_id”的列,该列链接到平台表,其中键字段链接到它所在的平台。那么,我如何从游戏表中获取“平台id”,然后将其链接到“平台”,这样我就可以重新设置“平台标题”,然后使用它来搜索


模式:

基于您的小提琴,以下是您的更新:

SELECT g.game_id, g.title, p.platform_name, a.author_name, g.price
FROM games g
INNER JOIN platforms p ON p.platform_id = g.platform_id
INNER JOIN author a ON a.author_id = g.author_id
WHERE g.title LIKE 'Skyrim';
你显然会改变
其中的g.title,比如'Skyrim'到要筛选的任何字段。因此,平台查询将是:

SELECT g.game_id, g.title, p.platform_name, a.author_name, g.price
FROM games g
INNER JOIN platforms p ON p.platform_id = g.platform_id
INNER JOIN author a ON a.author_id = g.author_id
WHERE p.platform_name LIKE 'Xbox';

我还建议您将字符集更改为utf8,而不是latin1,前提是这反映了您的生产数据库设置。

是否只是您的连接不好?它不应该是
。。。在games.platform_id=platforms.id
上,我强烈建议您使用我们可以在sqlfiddle.com上使用的数据构建一个模式,在更正后,搜索仍然无法按预期工作,感谢您的注意!我现在就创建模式!完成!我已经把标题搜索作为一个例子,因为这一个工作!我只需要让平台搜索工作现在你的明星!非常好用,非常感谢!如果我想搜索一个作者,是否只是简单地将where语句改为一个.author_名称,就像“某物”一样?这没有什么意义,平台搜索以前是有效的。如果我在phpmyadmin上运行代码并显示正确的结果,代码仍然有效,但如果在我的网站上运行,则返回错误的信息。但代码是一样的吗?这可能是什么原因造成的?我建议您查看一下mysql.log,看看在您的站点上运行SQL时实际运行的是什么。我通常在
/var/log/mysql/mysql.log
的命令行中找到它。如果您找不到问题,我建议将此作为新问题发布;)喜欢SQL92之前的版本。老派!
SELECT g.game_id, g.title, p.platform_name, a.author_name, g.price
FROM games g
INNER JOIN platforms p ON p.platform_id = g.platform_id
INNER JOIN author a ON a.author_id = g.author_id
WHERE p.platform_name LIKE 'Xbox';