我有一些PHP/MySQL代码从多个不同的表中提取数据(使用内连接)。它看起来像这样:
$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)";
$data = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($data)) {
echo $row[1];
}
代码很简单,但是我想做的是在while循环中返回表的每一行,因为它可以在两个表中的一个中。
我看到有一些旧的mysql函数,如mysql_field_table和mysql_tablename,可以做到这一点,但它们似乎都被弃用了。
您可以为每个表选择带有特殊标识符的数据,而不是使用*
select table1.row1 as t1r1, table2.row1 as t2r1,..... from .....
在php中,你可以查找字符串t1和t2,然后做相应的操作
您可以做的是从结果表(希望现在包含两个表的信息)中回显多个字段。
$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)";
$data = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($data))
{
echo $row[1] . " " . $row[2];
}
…然后是$row[3]
等
或通过列名或AS
提供的别名访问列名/字段。
$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)";
$data = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_assoc($data))
{
echo $row["c_name1"] . " " . $row["c_name2"];
}
, <我> c_name1 "answers"<我> c_name2 "是你的列名。我>我>
使用AS
关键字重命名所有列
$select_clause = '';
$tables = array('tblA', 'tblB');
foreach($tables as $tbl) {
mysql_query('SHOW COLUMNS FROM ' . $tbl);
while ($row = mysql_fetch_assoc())
$select_clause .= '`'.$tbl.'`.`'.$row['Field'].'` AS `'.$tbl
.'_'.$row['Field'].'`,';
}
$select_clause = substr($select_clause, 0, -1);
mysql_query('SELECT '.$select_clause.' FROM /*...*/ ');