我有一个连接两个表的 mysql 数据库的查询。在第一个表中,它只是根据 id 提取记录。对于第二个表,可能存在也可能不存在基于第一个表中的值的匹配。我想获得匹配项(如果有的话),否则,结果记录集的这些值可能是空的。
该查询似乎生成了正确数量的记录。然而,当我尝试访问一些应该存在的变量的值时,我没有得到任何东西,要么因为我可能调用了错误的名称,要么它们不在记录集中。我对 mysql 查询有点模糊,所以非常感谢任何建议..
表1公园
id | name | stateid
表2参观过的公园
id | visited | parkid | userid
PHP 脚本
$sql = "SELECT *
FROM `parks` p
LEFT JOIN `parksvisited` pv
ON p.id = pv.parkid
WHERE p.stateid = '44'"
运行查询...
while($row = mysql_fetch_array($res))
{
if ($row['visited'] == 1) {
$visited = 1; }
else {
$visited = 0; }
<a href="javascript:void(0);" onclick="loadParks(\''.$row['stateid'].'\',\''.$row['p.id'].'\',\''.$visited.'\');">Visited</a>
}
基本上,我得到了 stateid,但我没有得到 p.id 或访问过。可能是我把它们命名错误,或者它们可能以某种方式被排除在结果之外......感谢您的任何建议。
最佳答案
p.id
可能会丢失,因为 p.id
和 pv.id
都将作为 id 返回
,而不是 p.id
或 pv.id
。试试这个:
SELECT p.id pid,
p.*,
pv.id pvid,
pv.*
FROM `parks` p
LEFT JOIN `parksvisited` pv
ON p.id = pv.parkid
WHERE p.stateid = '44'
看起来您也没有从原始查询中的 pv
中选择任何内容,而只是选择 p
。看看这个新查询是否也处理visited
。并确保将 pid
引用为 $row['pid']
,而不是 $row['p.id']
。
关于php/mysql/ajax 加入查询并访问结果变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11414262/