MySQLi内部加入问题[重复]
Posted
技术标签:
【中文标题】MySQLi内部加入问题[重复]【英文标题】:MySQLi Inner Join issue [duplicate] 【发布时间】:2021-04-17 17:12:37 【问题描述】:我在通过 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 表中)并输入一个常见的姓氏,我不会得到任何结果。如果我使用用户名作为 $smode 变量(在 phpbb_users 表中),情况也是如此。我没有得到任何结果。 group_id 列是一个整数,而其他两个是字母数字变量,但是当我将 $smode 更改为 pf_mh_year(phpbb_profile_fields_data 表中的 4 位整数)时,我仍然没有得到任何结果。我在 error_log 中没有收到错误消息,因为 $result->num_rows 为零 - 除了列表显示的第一种情况。
【问题讨论】:
将echo $sql
添加到您的脚本并在PHPMyAdmin(或任何其他工具)中验证SQL 语句
【参考方案1】:
我确实回显了 $sql,它看起来不错。但是当我按照您的建议在 PHPMyAdmin 中对其进行测试时,它表明我需要将 $parameter 值放在单引号中。不知道为什么它在没有它们的情况下对一个整数列起作用,但对另一个整数列不起作用,但无论哪种方式,现在引号都已到位,一切正常。
【讨论】:
以上是关于MySQLi内部加入问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章
上一个和下一个按钮(php和mysqli)不断收到500个内部服务器错误[重复]