MySQLi 内部联接问题 [duplicate]

MySQLi Inner Join issue [duplicate]

提问人:Cruzer 提问时间:1/13/2021 更新时间:1/13/2021 访问量:22

问:

我在论坛上有两个表,我通过 SELECT 查询引用它们。一个表是phpBB_users表,它保存成员的基本数据,而第二个表 phpbb_profile_fields_data 保存地址、电子邮件、电话等详细信息。两个表都使用 user_id 作为键。我的窗体选择 $smode 参数,该参数列出了要搜索的各种列标题,以及 $parameter 变量,该变量输入要搜索的实际数据。结果显示在 HTML 表格中。

这是我的代码:

$conn = new mysqli('localhost',$user,$pass,$database);

$sql = "SELECT * FROM phpbb_users 
INNER JOIN phpbb_profile_fields_data ON phpbb_users.user_id = phpbb_profile_fields_data.user_id
WHERE   $smode = $parameter
ORDER BY username";
$result = $conn->query($sql);

如果我选择 group_id(在phpbb_users表中)作为我的$smode变量,并输入给定的组号作为$parameter变量,我会得到该组中成员的一个很好的列表。如果我将$smode变量更改为 pf_user_lastname(在phpbb_profile_fields_data表中)并输入一个通用姓氏,我不会得到任何结果。如果我使用 username 作为$smode变量(位于phpbb_users表中),则同样适用。我没有得到任何结果。group_id列是一个整数,而另外两个是字母数字变量,但是当我将$smode更改为pf_mh_year时,这是phpbb_profile_fields_data表中的 4 位整数,我仍然没有得到任何结果。我在error_log中没有收到任何错误消息,因为 $result->num_rows 为零 - 除了显示列表的第一种情况。

php select mysqli inner-join

评论

0赞 Luuk 1/13/2021
添加到您的脚本中,并在 PHPMyAdmin(或任何其他工具)中验证 SQL 语句echo $sql

答:

-1赞 Cruzer 1/13/2021 #1

我确实回应了$sql,看起来不错。但是当我像您建议的那样在 PHPMyAdmin 中测试它时,它表明我需要将$parameter值放在单引号中。不知道为什么它对一个整数列没有它们,而对另一个整数列不起作用,但无论哪种方式,现在引号都到位了,一切都有效。