2015-05-08 134 views
0

我已经创建名为(插入)具有两个表table1的一个数据库和表2.从数据库的两个表中检索数据并显示它使用PHP

table1有3列user, id, roll

table2有2列id, menu

我已经在两个表中插入了值。我想从两个表中检索所有值,并在另一个php文件中显示它们,但我的查询不起作用。它显示错误。我该怎么办?这里是我的代码

<?php 

include 'insertjoincon.php'; 
$sql = "SELECT table1.user, id FROM table1, table2 WHERE table1.id=table2.id"; 

echo "<table border=1>\n<tr><th>Name</th><th>ID</th></tr>\n"; 

while ($line = mysql_fetch_array($sql)) { 
    $name = $line["user"]; 
    $id = $line["id"]; 
    echo "<tr>"; 
    echo "<td>" . $name . "</td>"; 
    echo "<td>" . $id . "</td>"; 
    echo "</tr>"; 

    echo "</table>"; 
} 

$conn->close(); 
?> 
+0

http://pastebin.com/PZvvU4Va这里是两个表的信息 – USERRR5

+1

如果你有上面定义的$ conn,为什么你要使用'mysql_query'? – briosheje

+0

对不起,我没有明白.. – USERRR5

回答

1

(编辑:冷杉几句话是不正确的。我第一眼看到你指定了一列的表格,但错过了你没有指定id的表格。由于它们共享相同的值,请选择一个表格并指定它。您应该始终使用显式或隐式JOINS指定表。不过,第一件事是第一件事)。

我猜你的查询实际上工作,如果你测试它。你的查询没有任何内在的错误(尽管我总是建议使用明确的JOINS)。

有就是为什么你提供是行不通的示例代码...

你错过$result = mysqli_query($sql):

郁慕明就可以使用mysqli_fetch_array($result)一个很好的理由。

mysqli_fetch_array()需要结果,而不是SQL字符串。

请注意,您应该使用mysqli而不是mysql

2

更改查询

$sql = "SELECT table1.user, table1.id FROM table1, table2 WHERE table1.id=table2.id"; 
+0

技术上是,但为什么'FROM table1,table2'?看来OP数据库设计不好 – Alex

+1

我只修改了查询。表格1。id缺失,这可能会给出错误 – Keerthi

2

你需要的唯一标识符(别名)为您的表:

$sql = "SELECT t1.user, t1.id FROM table1 t1, table2 t2 WHERE t1.id=t2.id"; 

可能更好的将是一个LEFT JOIN:

$sql = "SELECT t1.user, t1.id FROM table1 t1 LEFT JOIN table2 t2 on t1.id=t2.id"; 
+0

即时通讯您应该解释为什么您使用'LEFT'而不是'INNER'尽管 – DarkBee

+1

OP:“我想从两个表中检索所有值”--- LEFT将是做到这一点的最低途径; INNER不会显示行,除非两个表都匹配。我想从最严格的意义上来说,“所有值”实际上可能需要一个OUTER连接,但我确信在我向任何人推荐一个OUTER JOIN之前,我确实希望返回所有这些值.... –

+0

now query is working但这部分是创建问题while($ line = mysql_fetch_array($ sql)){ $ name = $ line [“user”]; $ id = $ line [“id”]; echo“”; 回声“​​”。 $名称。 “”; 回声“​​”。 $ id。 “”; echo“”; echo“”; }它显示警告警告:mysql_fetch_array()期望参数1是资源,在第14行C:\ xampp \ htdocs \ jointwo.php中给出的字符串 – USERRR5

相关问题