[英]combine two phpmysql queries
我想結合這兩個php mysql查詢,並想要得到一個結果集數組。 第一個查詢給出所有與memberby和postby相關的帖子,第二個查詢給出所有與member_id
為0, post_by
為0且admin_id
不為0和super_admin_post
0的與admin相關的帖子。
數據庫:
1)wall_post_master這是我的第一個數據庫字段。
wp_id
, wp_cat_id
, wl_text
, wp_img
, datetime
, displevel
, mg_id
, member_id
, admin_id
, family_id
, post_by
, photo_id
, post_category
, generation_id
, visible_to
, highlight
, super_admin_post
2)admin_user_master這是我的第二個數據庫字段。
user_id
, family_id
, first_name
, last_name
, password
, email_id
, user_level
這是我顯示留言牆數據的條件:
1)如果mg_id退出,且有多個member_id與逗號相關。
2)如果visible_to退出且具有多個member_id與逗號相關。
3)如果member_id與當前member_id一起退出。
4)如果member_id在post_by中退出。
5)如果member_id為0,post_by為0,super_admin_post = 0,那么我想顯示為管理員帖子。
第一個查詢:
$grpsearch = "";
foreach ($arrseltran as $grpid) {
$grpsearch .= " OR ( FIND_IN_SET('" . $grpid . "', wp.mg_id) AND displevel = 3)";
}
if($time == ""){ $time .= " WHERE"; }else{ $time .=" AND"; }
$time .= "
wp.family_id = " . $_SESSION['logft']['family_id'] . " AND
wp.post_category = 0 AND
(
wp.member_id = " . $_SESSION['logft']['member_id'] . " OR
wp.post_by = " . $_SESSION['logft']['member_id'] . " OR
FIND_IN_SET('" . $_SESSION['logft']['member_id'] . "', wp.visible_to) " . $grpsearch . " OR
displevel = 1
)";
$timeline = "SELECT wp.*,
wp.member_id,
wp.datetime AS TimeSpent,
wp_cat.font_color,
photo.photo_path,
mm.first_name,
mm.middle_name,
mm.last_name,
mm1.first_name AS to_first_name,
mm1.middle_name AS to_middle_name,
mm1.last_name AS to_last_name
FROM wall_post_master wp
INNER JOIN
wallpost_cat_master wp_cat ON wp_cat.wp_cat_id = wp.wp_cat_id
INNER JOIN
member_master mm ON mm.member_id = (CASE WHEN (wp.post_by = 0) THEN wp.member_id ELSE wp.post_by END)
INNER JOIN
member_master mm1 ON mm1.member_id = wp.member_id
LEFT JOIN
photo_master photo ON photo.photo_id = mm.photo_id
" . $time ." ORDER BY Timespent DESC";
第二個查詢:
$timeline1 = "SELECT wpa.*,
wpa.family_id,
wpa.datetime AS TimeSpent,
wp_cat.font_color,
wpa.wp_img,
c.family_id,
c.family_name,
c.editor_photo,
aum.first_name,
aum.last_name
FROM wall_post_master wpa
INNER JOIN
wallpost_cat_master wp_cat ON wp_cat.wp_cat_id = wpa.wp_cat_id
INNER JOIN
config c ON c.family_id = wpa.family_id
INNER JOIN
admin_user_master aum ON aum.family_id = wpa.family_id
where
aum.user_level = 1 and
wpa.admin_id <> 0 and
wpa.family_id='".$_SESSION['logft']['family_id']."' and
wpa.member_id=0 and
wpa.post_by=0 and
wpa.super_admin_post=0
ORDER
BY Timespent DESC";
使用Join本身的概念
select a.col1,a.col2,b.col1,b.col3 from first_table as a, second_table as b where a.col1=condition and b.col1=condition
您可以使用mysqli函數:
mysqli_multi_query()
要么
mysqli::multi_query()
http://php.net/manual/en/mysqli.multi-query.php
來自鏈接的完整示例:
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";
/* execute multi query */
if ($mysqli->multi_query($query)) {
do {
/* store first result set */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
$result->free();
}
/* print divider */
if ($mysqli->more_results()) {
printf("-----------------\n");
}
} while ($mysqli->next_result());
}
/* close connection */
$mysqli->close();
?>
Procedural style
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";
/* execute multi query */
if (mysqli_multi_query($link, $query)) {
do {
/* store first result set */
if ($result = mysqli_store_result($link)) {
while ($row = mysqli_fetch_row($result)) {
printf("%s\n", $row[0]);
}
mysqli_free_result($result);
}
/* print divider */
if (mysqli_more_results($link)) {
printf("-----------------\n");
}
} while (mysqli_next_result($link));
}
/* close connection */
mysqli_close($link);
?>
如果您匹配兩個查詢中選擇的字段名稱,則可以使用UNION
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.