2012-03-22 63 views
0

我是很新的SQL和我有麻烦写这
我有这样SQL:让所有列的记录与同一ID

id name 
1 A 
2 B 
3 C 
1 D 
1 E 
1 F 
... 

我想要的查询将返回一个表我的ID我给它的名字......说,如果我问1,我希望它返回ADEF 我在PHP尝试这样:

$result3 = mysql_query("SELECT name FROM table WHERE id='1'", $link); 

    $pfilearray=array(); 
    $pfilearray=mysql_fetch_assoc($result3); 

    print_r($pfilearray); 

,但是这给了我只能用ID找到的第一个名字1,我错过了什么?

回答

4

你应该使用while()和mysql_fetch_assoc()迭代整个结果集。例如:

while(($rs=mysql_fetch_assoc($result3))!=null) 
{ 
    $pfilearray[]=$rs['name']; 
} 
print_r($pfilearray); 
1

mysql_fetch_assoc回报从你的结果一排设置,因此将只返回第一个值。您需要遍历结果集(代码中的$ result3)并获取所有行。

顺便说一句,功能的mysql_家庭是很老,大多数人会建议使用mysqli_家庭,甚至更好,PDO

编辑: 一个非常基本的PDO例如:

$ddh = new PDO(/* connection details */); 
$sth = $dbh->prepare('SELECT name FROM table WHERE id= ? '); 
$sth->execute(array(1)); 
$names = $sth->fetchAll(); 
+0

我不介意使用'fetch_assoc'有另一种命令? 也是如何循环?与'foreach'? 会考虑你的建议的PDO,感谢名单 – krasatos 2012-03-22 09:26:01

+0

@krasatos我添加了一个基本的PDO的例子。我会建议阅读文档,然后在网上搜索一些教程。 – liquorvicar 2012-03-22 09:57:40

1

您可以使用此代码,并验证你可以能够retieve

while($row = mysql_fetch_array($result3)) 
{ 
    echo $row['name']; 
    echo "<br>"; 
} 
0

通过您的结果集使用mysql_fetch_array试试这个

$result3 = mysql_query("SELECT name FROM table WHERE id='1'", $link); 
while($row=mysql_fetch_array($result3)) 
{ 
    echo $row['name']; 
} 
相关问题