在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更好地完成