Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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
在mysql查询的结果中添加值,该查询将用PHP进行JSON编码?_Php_Mysql_Json - Fatal编程技术网

在mysql查询的结果中添加值,该查询将用PHP进行JSON编码?

在mysql查询的结果中添加值,该查询将用PHP进行JSON编码?,php,mysql,json,Php,Mysql,Json,我想根据另一个表中是否存在一行,为从查询中获得的每一行添加一个值。有没有明智的方法来实现这一点 这是我的代码: $sth = mysql_query("SELECT tbl_subApp2Tag.*, tbl_tag.* FROM tbl_subApp2Tag LEFT JOIN tbl_tag ON tbl_subApp2Tag.tag_id = tbl_tag.id WHERE tbl_subApp2Tag.subApp_id = '".$sub."' ORDER BY tbl_tag.na

我想根据另一个表中是否存在一行,为从查询中获得的每一行添加一个值。有没有明智的方法来实现这一点

这是我的代码:

$sth = mysql_query("SELECT tbl_subApp2Tag.*, tbl_tag.* FROM tbl_subApp2Tag LEFT JOIN tbl_tag ON tbl_subApp2Tag.tag_id = tbl_tag.id WHERE tbl_subApp2Tag.subApp_id = '".$sub."' ORDER BY tbl_tag.name ASC");
if(!$sth) echo "Error in query: ".mysql_error();
while($r = mysql_fetch_assoc($sth)) {
    $query = "SELECT * FROM tbl_userDevice2Tag WHERE tag_id='".$r['id']."' AND userDevice_id='".$user."'";
    $result = mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($result)) {
        $r['relation'] = true;
        $rows[] = $r; //Add 'relation' => true to this row
    } else {
        $r['relation'] = false;
        $rows[] = $r; //Add 'relation' => false to this row
    }
}
print json_encode($rows);
其中//Add。。。是,是我想插入额外值的地方。有什么建议我可以这样做吗? 我仍然是PHP的初学者,所以如果还有什么我错过的,请告诉我

编辑:第二个查询来自错误的表。这是正确的

  • 您必须在一个查询中完成所有工作
  • 为什么你就不能
    $r['append']=“value”在将$r添加到数组之前
  • 您必须在一个查询中完成所有工作
  • 为什么你就不能
    $r['append']=“value”在将$r添加到数组之前

  • 编辑编辑以下查询以反映新信息,因为我不喜欢半途而废

    $sth = mysql_query("
        SELECT
            tbl_subApp2Tag.*,
            tbl_tag.*,
            ISNULL(tbl_userDevice2Tag.userDevice_id) AS relation
    
        FROM tbl_subApp2Tag
        LEFT JOIN tbl_tag
            ON tbl_tag.id = tbl_subApp2Tag.tag_id
    
        LEFT JOIN tbl_userDevice2Tag
            ON tbl_userDevice2Tag.tag_id = tbl_tag.id
            AND tbl_userDevice2Tag.userDevice_id = '".$user."'
    
        WHERE tbl_subApp2Tag.subApp_id = '".$sub."'
        ORDER BY tbl_tag.name ASC
    ");
    
    虽然上面的感觉像是
    tbl_标签上的
    左连接
    是错误的,但很难说清楚,因为你对最终目标的认识很模糊。例如,如果我假设

  • 标记将始终存在
  • subApp2Tag将始终存在
  • 您想知道tbl_userDevice2Tag中的记录是否与上述匹配
  • 然后,我将执行以下操作。内部联接意味着它不必担心
    tbl_标记
    中不在请求的
    subApp_id
    上的记录,这反过来会限制其他联接

    $sth = mysql_query("
        SELECT
            tbl_subApp2Tag.*,
            tbl_tag.*,
            ISNULL(tbl_userDevice2Tag.userDevice_id) AS relation
    
        FROM tbl_tag
    
        INNER JOIN tbl_subApp2Tag
            ON tbl_subApp2Tag.tag_id = tbl_tag.id
            AND tbl_subApp2Tag.subApp_id = '".$sub."'
    
        LEFT JOIN tbl_userDevice2Tag
            ON tbl_userDevice2Tag.tag_id = tbl_tag.id
            AND tbl_userDevice2Tag.userDevice_id = '".$user."'
    
        ORDER BY tbl_tag.name ASC
    ");
    

    编辑编辑以下查询以反映新信息,因为我不喜欢半途而废

    $sth = mysql_query("
        SELECT
            tbl_subApp2Tag.*,
            tbl_tag.*,
            ISNULL(tbl_userDevice2Tag.userDevice_id) AS relation
    
        FROM tbl_subApp2Tag
        LEFT JOIN tbl_tag
            ON tbl_tag.id = tbl_subApp2Tag.tag_id
    
        LEFT JOIN tbl_userDevice2Tag
            ON tbl_userDevice2Tag.tag_id = tbl_tag.id
            AND tbl_userDevice2Tag.userDevice_id = '".$user."'
    
        WHERE tbl_subApp2Tag.subApp_id = '".$sub."'
        ORDER BY tbl_tag.name ASC
    ");
    
    虽然上面的感觉像是
    tbl_标签上的
    左连接
    是错误的,但很难说清楚,因为你对最终目标的认识很模糊。例如,如果我假设

  • 标记将始终存在
  • subApp2Tag将始终存在
  • 您想知道tbl_userDevice2Tag中的记录是否与上述匹配
  • 然后,我将执行以下操作。内部联接意味着它不必担心
    tbl_标记
    中不在请求的
    subApp_id
    上的记录,这反过来会限制其他联接

    $sth = mysql_query("
        SELECT
            tbl_subApp2Tag.*,
            tbl_tag.*,
            ISNULL(tbl_userDevice2Tag.userDevice_id) AS relation
    
        FROM tbl_tag
    
        INNER JOIN tbl_subApp2Tag
            ON tbl_subApp2Tag.tag_id = tbl_tag.id
            AND tbl_subApp2Tag.subApp_id = '".$sub."'
    
        LEFT JOIN tbl_userDevice2Tag
            ON tbl_userDevice2Tag.tag_id = tbl_tag.id
            AND tbl_userDevice2Tag.userDevice_id = '".$user."'
    
        ORDER BY tbl_tag.name ASC
    ");
    

    这可以通过sql更好地完成这可以通过sql更好地完成