Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表查询,从表1中选择数据,但仅当表2中的用户设置设置为特定值时_Php_Sql_If Statement_Select - Fatal编程技术网

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,用于创建每个配置的用户。我使用以下方法修复了它: