簡體   English   中英

從sql數據庫獲取數據,然后通過php將其用於選擇查詢

[英]Getting data from sql database and then use it for select query via php

我有這個分配表:

PROJECT_ID | NAME_ID
1                1
1                2
2                1
2                2

我的php代碼如下所示:

<html>
<body>
<?php
mysql_connect("xxx","xxx","xxx") 
    or die ("Connection failed");
mysql_select_db("xxx") 
    or die ("Connection failed");
$res = mysql_query("SELECT PROJECT_ID FROM Projects_Names WHERE NAME_ID=1 AND 2");
$num = mysql_num_rows($res);
echo "$num Projects found<br />";

while($dsatz = mysql_fetch_assoc($res))
{
echo $dsatz["PROJECT_ID"] . "<br />";
}

?>

然后,這將給我以下輸出:

2 Projects found
1
2

到現在為止還挺好。 但是我基本上想要的是找出雇員1和雇員2都參與的項目的名稱。我還有兩個表。 具有項目名稱,ID等的Projects表和具有名稱,ID等的Employee表...

我現在基本上想說:

“在“項目”表中查找剛剛作為輸出提供的ID(1,2),並給我這些項目的名稱”

我希望有人能給我一些有關如何解決此問題的意見,我昨天才剛開始使用sql + php,所以有很多東西要學習:)

最好的選擇是結合使用GROUP BYCOUNTHAVING來獲得想要的東西

SELECT project_id, COUNT(DISTINCT name_id) AS `name_count`
FROM projects_names
WHERE name_id IN (?,?,...)
GROUP BY project_id
HAVING `name_count` = n

在這里,您將列出所有感興趣的name_id值,並且n等於要搜索的name_id值的數量。 因此,如果您要查找name_id 1和2,則將使用n =2。這意味着找到所有要運行id的項目,但是可能還會涉及到其他name_id(不包括在計數中)他們被過濾掉了)。

那是錯誤的語法。 您應該這樣單獨編寫:

$res = mysqli_query($con, "SELECT PROJECT_ID FROM Projects_Names WHERE NAME_ID=1 AND NAME_ID = 2");

或使用in

$res = mysqli_query($con, "SELECT PROJECT_ID FROM Projects_Names WHERE NAME_ID in (1,2)");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM