echo fetch_array行如果它们具有相同的名称

时间:2012-09-10 12:54:21

标签: php mysql html

求助:感谢大家的快速回答

我有3个表,我加入了它们(在SQL中检查,值是正确的)但问题是其中2个具有相同的字段“denumire”具有不同的值,我需要回显它们

为了更清楚,这段代码回显相同的值,但在mysql中ID是正确的:

echo "<td valign='top'>" . nl2br( $row1[`specializare`.'denumire']) . "</td>";  
echo "<td valign='top'>" . nl2br( $row1[`disciplina`.'denumire']) . "</td>"; 

mysql表结构:

specializare->ID_specializare, denumire 
disciplina->ID_disciplina,denumire 
preda->ID_specializare, ID_disciplina, etc
php中的

sql_query:

$sql1 = mysql_query("SELECT preda.ID_material, prof.ID_prof, prof.nume, prof.prenume, `specializare`.denumire, disciplina.denumire, preda.an_studiu, preda.semestru, preda.material
FROM `prof`
LEFT JOIN `preda` ON `prof`.ID_prof = `preda`.ID_prof
LEFT JOIN `specializare` ON `specializare`.ID_specializare= `preda`.ID_specializare
LEFT JOIN `disciplina` ON `disciplina`.ID_disciplina = `preda`.ID_disciplina
WHERE '".$_SESSION['ID_prof']."'=prof.ID_prof
ORDER BY specializare.denumire;"); 

5 个答案:

答案 0 :(得分:5)

运行SQL查询时,应使用别名列名称。

e.g。

SELECT t1.id as t1_id , t2.id as t2_id FROM table1 t1 , table2 t2 WHERE t2.id = t1.table_id_match

答案 1 :(得分:1)

在查询中使用别名

SELECT specializare.denumire as val1, disciplina.denumire as val2 etc .....

然后做

echo "<td valign='top'>" . nl2br( $row1['val1']) 

答案 2 :(得分:0)

您应该在表和列上使用别名,如下所示:

select
    a.someColumnName as aCol,
    b.someColumnName as bCol
from
    table1 a
        join table2 b
            on a.tableID=b.tableID

并使用a / b(或您在表上设置的任何别名)来确定在您将其引入(通过使用as aCol)查询时哪些列以及如何引用它们。

答案 3 :(得分:0)

选择列时,可以使用别名:

SELECT denumire AS specDenumire FROM specializare

答案 4 :(得分:0)

是的,我们需要了解发生的事情。

在mysql中, 您可能已经通过tablename.columnname克服了冲突,但mysql给出的结果将是: denumire | denumire而不是specializare。'denumire'| disciplina 'denumire'

因此,在使用mysql_fetch_assoc()时,whem php存储导致数组。因为,关键是它们被覆盖,即 $ arr ['denumire'] = 1 // {{}}} .'denumire'将被覆盖 $ arr ['denumire'] = 2 // {{}}} .'denumire'。 因此,您可以通过别名来解决