2013-03-11 41 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 />'; 
      }