- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个表,其中一个看起来像这样:
表一
id | Last Name | First Name | Username | Password | Secret Question
另一个看起来像这样:
表二
id | Hobby | Country |
我想组合一个 Select 语句,从两个表中获取数据并输出结果。代码如下:
$select = mysql_query("
SELECT * FROM table_one WHERE Username = 'Bob'
UNION ALL
SELECT * FROM table_two WHERE Hobby = 'Baseball'
");
while ($return = mysql_fetch_assoc($select)) {
$userName = $return['Username'];
$hobby = $return['Hobby'];
}
echo "$userName likes $hobby";
导致使用的 SELECT 语句有不同的列数错误,我做错了什么?
<小时/>编辑:
运行此命令会出现以下错误:警告:mysql_fetch_assoc():提供的参数不是/home/studentw/public_html/foo.php 第 16 行中的有效 MySQL 结果资源
$select = mysql_query("
SELECT FROM TABLE_ONE t1
INNER JOIN TABLE_TWO t2
ON t1.id = t2.id
WHERE t1.Username = 'Bob'
AND t2.Hobby = 'Baseball'
");
while ($return = mysql_fetch_assoc($select)) {
$firstName = $return['Username'];
$hobby = $return['Hobby'];
}
echo "$firstName likes $hobby";
表中的值为:
表一
id | Last Name | First Name | Username | Password | Secret Question
1 | Hughes | Bobby | Bob | 123 | Maiden name?
表二
id | Hobby | Country |
1 | Baseball | USA
最佳答案
我想你想要一个 JOIN ,而不是 UNION 或 UNION ALL。
SELECT FROM TABLE_ONE t1
INNER JOIN TABLE_TWO t2
ON t1.id = t2.id
WHERE t1.Username = 'Bob'
AND t2.Hobby = 'Baseball'
联合要求每个表的数据列具有相同的数量和类型,并且基本上为您提供来自不同表的多行的串联。另一方面,联接实质上是通过将另一个表的列与另一个表的列联接起来,将一个表扩展为具有更多列的更宽的表。
当你进行连接时,你需要指定一个表的行如何与另一个表相对应;在这种情况下,我假设您的 Id 字段应该是将表链接在一起的主/外键。如果这是不正确的,我们深表歉意 - 如果是这样,我将需要更多信息才能为您提供适当的帮助。
<小时/>根据您编辑的问题:
我首先会将您链接到 documentation for the mysql_query
function 。它有一个必需参数和一个可选参数;第二个参数是您的连接句柄。如果您不指定它,则 PHP 假定最后一个连接是通过 mysql_connect
打开的。是您想要使用的那个。所以我的第一个问题是,您是否正确调用了 mysql_connect
并且该调用是否成功工作?
如果您确定 mysql_connect
调用有效,那么我不确定问题是什么。不过,我认为将 mysql_connect 的结果分配给变量不会有什么坏处,这样您就可以在 mysql_query 中显式指定连接。也许像下面这样:
$conn = mysql_connect("localhost:3306", "username", "password");
$query = "select * from some_table"; // obviously use your own query here
$result = mysql_query($query, $conn);
如果这不起作用,请告诉我。
关于php - 如何 UNION ALL 两个 SELECT 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770070/
我是一名优秀的程序员,十分优秀!