Php 表查询,从表1中选择数据,但仅当表2中的用户设置设置为特定值时
我对这个问题有疑问。 不确定这类问题的名称,因此在搜索解决方案时遇到问题: 我有两个表:配置,用户 假设这些表如下所示:Php 表查询,从表1中选择数据,但仅当表2中的用户设置设置为特定值时,php,sql,if-statement,select,Php,Sql,If Statement,Select,我对这个问题有疑问。 不确定这类问题的名称,因此在搜索解决方案时遇到问题: 我有两个表:配置,用户 假设这些表如下所示: configurations: id userid ...more users: id smart enum('0','1') ...more 这是我现在得到的查询,但它获取了许多具有相同数据的行: SELECT configurations.* FROM configurations, users WHERE configurations.use
configurations:
id
userid
...more
users:
id
smart enum('0','1')
...more
这是我现在得到的查询,但它获取了许多具有相同数据的行:
SELECT
configurations.*
FROM
configurations, users
WHERE
configurations.userid!='$userid' AND configurations.deleted='0' AND users.smart='1' AND
(
configurations.id LIKE '%$filter%' OR
configurations.type LIKE '%$filter%' OR
configurations.type_desc LIKE '%$filter%' OR
configurations.other_id LIKE '%$filter%' OR
configurations.project_no LIKE '%$filter%' OR
configurations.part_no LIKE '%$filter%' OR
configurations.company_name LIKE '%$filter%' OR
configurations.company_contact LIKE '%$filter%'
)
ORDER BY
configurations.createdate DESC
LIMIT
$search_config_count
";
我怎样才能做到这一点,所以我只能在users.smart='1'时获得“配置”
我的配置表有一个userid字段,该字段与users表中用户的ID相匹配。该特定用户需要具有smart='1',才能列出配置。如果我正确理解您的问题,您可以对两个表进行联接
$sql = "
SELECT
*
FROM
configurations,
users
WHERE
configurations.userid!='$userid' AND configurations.deleted='0' AND users.smart = 1 AND
(
configurations.id LIKE '%$filter%' OR
configurations.type LIKE '%$filter%'
)
ORDER BY
createdate DESC
LIMIT
$search_config_count
";
Possibile SQL injection请显示两个表的结构:users和ConfigurationsWing:您对参数化预处理语句非常开放,应该使用参数化预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行@MannyRamirez说,我不能让它工作。它一次又一次地获取相同的表行/记录。我认为问题与此相关:users.smart=1。users.smart必须与configurations.userid关联-不确定如何关联。它需要这样做:获取所有配置。*where configurations.userid=user.id和where user.smart=1,用于创建每个配置的用户。我使用以下方法修复了它: