gpt4 book ai didi

php - 三表内部连接与空表进行搜索

转载 作者:行者123 更新时间:2023-11-29 06:13:18 24 4
gpt4 key购买 nike

我的数据库结构如下 four tables

目前角色表、组表、保险库表都有数据。然而,游戏 table 是空的。

是否可以在 games 表上编写一个内部连接,允许 php 搜索框从其他三个表中获取数据,即使 games 表中没有数据?

还有其他我可能不知道的方法吗?

例如,我想为在游戏 table 上搜索的网页编写一个 php 搜索脚本。如果用户输入“Allistair Tenpenny”,它将从角色表中提取数据并将其与角色名称和历史记录一起显示在搜索页面中,如果有人搜索保险库,它将显示保险库表中的数据.

根据我对内部联接的了解,每个联接表上的数据必须匹配才能显示。还有另一种方法可以解决这个问题吗?

charactor table vault table

最佳答案

获取所需数据不需要内部联接。您可以简单地使用 php 来使用 SQL 根据用户输入搜索适当的表。

如果您的页面上有多个搜索字段,只需以不同的方式命名提交按钮,然后让 PHP 从表单中检查每个提交按钮的 POST 数据是否存在,然后执行适当的搜索。一个示例表单可能是:

<form action="" method="post">
Search Character Name:<input type="text" name="charactername">
<input type="submit" name="charsubmit" value="Search">
</form>
<form action="" method="post">
Search Vault Name:<input type="text" name="vaultname">
<input type="submit" name="vaultsubmit" value="Search">
</form>

然后您的 PHP 代码可以构造为:

if (isset($_POST['charsubmit']))
{
$stmt = $db->prepare("SELECT * FROM character_table WHERE character_name = ':mydata'");
$stmt->bindParam(':mydata',$_POST['charactername']);
}
elseif (isset($_POST['vaultsubmit']))
{
$stmt = $db->prepare("SELECT * FROM vault_table WHERE vault_name = ':mydata'");
$stmt->bindParam(':mydata',$_POST['vaultname']);
}

$stmt->execute();

像这样使用准备好的语句是防止 SQL 注入(inject)攻击的好方法,从而确保用户输入的数据绝不会直接放入 SQL 语句中。

关于php - 三表内部连接与空表进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com