如何一次查询两个表

时间:2014-08-21 21:03:51

标签: php mysql

我有点麻烦。我想检索$ tbl_name_2中列出的信息而不会弄乱登录。不确定如何做到这一点。我是自学成才,不太了解php和mysql。这是我的一些代码

<?php
session_start();

$host="";
$username="";
$password="";
$db_name="player";
$tbl_name="info";
$tbl_name_2="primary";

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT $tbl_name.* FROM $tbl_name WHERE userid='$userid' and passid='$passid'";
$result=mysql_query($sql);

while($rows=mysql_fetch_array($result)):

//From $tbl_name
$id = $rows['id'];
$cash = $rows['cash'];
$level = $rows['level'];

//From $tbl_name_2 Primary
$name = $row['name'];
$buy = $row['buy'];
?>

<p>
     <?php echo $_SESSION["userid"]; ?>&#91;<?php echo "$id"; ?>&#93;
</p>
<p>
    <?php if ($cash < 0): ?>   
    <span> -&#36;<?php echo ($cash * -1); ?></span>
    <?php else: ?>    
    <span> &#36;<?php echo $cash; ?></span>
    <?php endif; ?>
</p>
<p>
     <?php echo $name ; ?>
</p>

<?php
endwhile;
mysql_close();
?>

以下是关于表格的一些信息:

info table 
id     userid     cash     level     primaryid
----------------------------------------------
1      user1     100        1          2
2      user2     150        2          2
3      user2     300        4          1

primary table 
primaryid     name     buy     sale
------------------------------------
1             AR15     10        5
2             M16      50        10

我想做的是:

userid     level     cash     name    bought for
------------------------------------------------
user1       1        100     M16        50

并且能够将每个玩家所拥有的任何项目放在我的页面上的任何位置。

2 个答案:

答案 0 :(得分:0)

查看使用JOINS,以便从多个表中检索值,查看http://dev.mysql.com/doc/refman/5.0/en/join.html

答案 1 :(得分:0)

这个问题有点难以理解,但我认为你要做的是:

从第一个表(信息)获取用户信息(ID,现金和级别),但您也希望从第二个表(主要)中获取该名称。

要实现此目的,您必须使用SQL JOIN。为了能够连接表,您必须在第二个表中有一个标识符,这将创建指向第一个表中特定行的链接。

示例:

Table1
id      cash     level
----------------------
1       5        2
2       10       4


Table2
id      infoid   name
----------------------
1       2        Robin
2       1        Adam

使用这种表格布局,您可以轻松编写类似这样的SQL查询:

SELECT Table1.id, Table1.cash, Table1.level, Table2.name FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.infoid

该查询将返回table1和table2中的数据,方法是将table2中的infoid与table1中的id相同。

回报将是:

id     cash    level    name
1      5       2        Adam
2      10      4        Robin

w3schools.com

有一些很好的例子