0

首先为我在 php/mysql 中的可疑编码道歉,但这都是自学的(可能不是最佳实践)

我所有的代码似乎都可以工作,但是当结果被写入页面时,任何$dxcall不在$qrzdata数据库中的数据都会被最后一个结果填充,所有其他数据都可以正常显示。我已经尝试将其更改like $dxcall= $dxcall. 我也尝试过组合 fetch 数组,以防我的问题也在那里。但显然我的代码不知道如何处理 qrzdata 数据库中没有数据匹配的地方并继续前进。

$frqry是主要数据,所有其他 mysql_query 是它$squares并且$qrzdata匹配来自$frqry. 希望这是有道理的!

这是我的代码

$frqry = mysql_query("select * from spots where freq between '69900' and '70300' ORDER BY datetime desc limit 30");
While ($r0 = mysql_fetch_array($frqry))
{
$freq = $r0["freq"];
$dxcall = $r0["dxcall"];
$datetime = $r0["datetime"];
$comments = $r0["comments"];
$spotter = $r0["spotter"];
$dt = date('d-m-y H:i ', $datetime);
$qra = $r0["loc"];

$squares = mysql_query("select * from squares where callsign like '$dxcall' limit 1");
while ($r1 = mysql_fetch_array($squares))
{
$qra = $r1["loc"];
}

$qrzdata = mysql_query("select * from qrzdata where callsign = '".$dxcall."' limit 1");
While ($r2 = mysql_fetch_array($qrzdata))
{
$country = $r2["country"];
$firstname = $r2["firstname"];
$city = $r2["city"];
}

任何帮助是极大的赞赏。谢谢你。

4

2 回答 2

2

您需要了解JOIN;)

您的整个代码可以在一个查询中重写:

免责声明:未经测试,但您肯定明白

SELECT * FROM spots
JOIN squares ON (squares.callsign = spots.dxcall) -- this comes in stead of your first inner loop
JOIN qrzdata ON (qrzdata.callsign = spots.dxcall) -- this is your second loop
WHERE freq BETWEEN 69900 AND 70300 -- remove quotes, you are dealing with integers, not strings (hopefully)
于 2013-07-19T14:46:43.683 回答
0

你必须重置你的变量!

While ($r0 = mysql_fetch_array($frqry))
{
    $qra = '';
    $country = '';
    $firstname = '';
    $city = '';

或者你总是会得到最后一个值

于 2013-07-19T14:47:02.727 回答