2013-03-11 39 views
-1

我想從一個表中獲得一些行row_ID,c_ID,e_ID, 每個e_ID可以有不同的c_ID's。 我使用mysql_fetch_array獲取與特定ID關聯的所有c_ID。mysql_fetch_array不起作用

$result=mysql_query("SELECT c_ID from User_Competence WHERE e_ID=".$id); 
      $test=mysql_fetch_array($result); 
      print_r ($test['c_ID']); 

但不是獲得每個e_ID幾個c_ID,我只有一個值在數組中。 我在查詢中丟失了什麼嗎?

+1

是'e_ID'在'User_Competence'表中的'unique'場? – 2013-03-11 13:14:18

+6

您需要在循環中調用它。在PHP標記wiki上有一個示例http://stackoverflow.com/tags/php/info – 2013-03-11 13:14:22

+2

您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068 ),並應使用[現代替代](http://php.net/manual/en/mysqlinfo.api.choosing.php)。我們無法看到'$ id'來自哪裏,但是您也可能會受到[SQL注入攻擊](http://bobby-tables.com/)**的影響,即現代API會使[捍衛](http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)你自己。 – Quentin 2013-03-11 13:14:36

回答

3

不,您沒有任何錯誤。如果e_ID是唯一的,你只會得到一個結果。 你可能想試試這個,如果E_ID不是唯一的:

$result=mysql_query("SELECT c_ID from User_Competence WHERE e_ID=".$id); 
while($test=mysql_fetch_array($result)) 
{ 
    print_r ($test['c_ID']); 
} 
+0

爲什麼我需要一段時間如果我想一次打印整個數組? – auicsc 2013-03-11 13:23:56

+2

@auicsc - 因爲每條記錄都是作爲單獨的數組加載的。如果你改用'PDO'作爲數據庫層而不是'mysql_xxx()'函數,那麼它確實能夠使用'PDO :: fetchall()'將所有記錄加載到一個大數組中,但是作爲事情的立場,你需要使用一個循環;這就是它的工作方式。 – SDC 2013-03-11 13:26:11

+1

@auicsc mysql_fetch_array是單行的列值的數組。您仍然需要爲每一行分別調用它。 – Boann 2013-03-11 13:55:07

1

試試這個讓所有IDS

$id = mysql_real_escape_string($id); // escape your variable here before u use it in the query 

    $result=mysql_query("SELECT c_ID from User_Competence WHERE e_ID='".$id."' "); 
     while ($test=mysql_fetch_array($result)){ 
     echo $test['c_ID'].'<br />'; 
      }