提问人:Cruzer 提问时间:1/13/2021 更新时间:1/13/2021 访问量:22
MySQLi 内部联接问题 [duplicate]
MySQLi Inner Join issue [duplicate]
问:
我在论坛上有两个表,我通过 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 为零 - 除了显示列表的第一种情况。
答:
我确实回应了$sql,看起来不错。但是当我像您建议的那样在 PHPMyAdmin 中测试它时,它表明我需要将$parameter值放在单引号中。不知道为什么它对一个整数列没有它们,而对另一个整数列不起作用,但无论哪种方式,现在引号都到位了,一切都有效。
评论
echo $sql