0

私はPHP/MySQLの初心者ですが、これまでのところうまくいきましたが、関連する2つのテーブルから情報を取得する必要があります。私は自分が何をする必要があるかについて多くの研究をしましたが、どこが間違っているのか理解できないようです。

質問:shortlink_analyticsのshortlinkに関連するshortlinksテーブルからリンクを取得するにはどうすればよいですか?

エラーが発生します:警告:mysql_fetch_array()は、パラメーター1がリソースであると想定しています。ブール値が指定されています

私のテーブルは次のとおりです。

ショートリンクテーブル

id

ショートリンク

リンク

createdTime

によって作成された

shortlink_analyticsテーブル

ショートリンク

リファラー

hitTime

userIP

ユーザーエージェント

私がこれまでに試したコードは次のとおりです。

$linecount = 1;
//$mostPop is where I think I have gone wrong and this is where the warning refers to
$mostPop = "SELECT shortlink, COUNT(shortlink) FROM shortlink_analytics JOIN shortlinks ON shortlink_analytics.shortlink = shortlinks.shortlink GROUP BY shortlink ORDER BY COUNT(shortlink) DESC LIMIT 10";
            $loadPop = mysql_query($mostPop);
            echo '<table id="middleIndex">';
            echo '<tr><td class = "overFlow"><h2>Most Popular Shortlink</h2></td></tr>';
            echo '<tr>';
            while($row = mysql_fetch_array($loadPop))
            {
                    echo '<td class = "overFlow">'.$row[1].' visits - <a href = "info.php?link='. $row['shortlink'] .'">hud.ac/' . $row['shortlink'] . '</a></td>';
                    echo '</tr>';
                    $linecount++;
            }
            echo '<tr id="indexMiddle"><td id="hand" class = "overFlow"><a onclick="indexMostPopular()">View More</a></td></tr>';
                echo '</table>';

JOINの使用方法や、結合を成功させるために必要なパラメーターについて、十分に理解していないと思います。

4

2 に答える 2

1

shortlink両方のテーブルにあいまいなケースがあります。このSQLステートメントを試してください:

$mostPop = "SELECT shortlink_analytics.shortlink AS short, 
COUNT(shortlink_analytics.shortlink) AS shortcount,
(SELECT link FROM shortlinks 
WHERE shortlinks.shortlink = shortlink_analytics.shortlink) AS shLink
FROM shortlink_analytics 
JOIN shortlinks ON shortlink_analytics.shortlink = shortlinks.shortlink 
GROUP BY shortlink_analytics.shortlink 
ORDER BY COUNT(shortlink_analytics.shortlink) DESC LIMIT 10";
于 2013-01-09T11:21:14.210 に答える
0

これを試してください(このクエリをmysqlで実行し、機能している場合はphpスクリプトに追加してください)

SELECT 
    shortlink_analytics.shortlink, COUNT(shortlink_analytics.shortlink)
FROM
    shortlink_analytics
INNER JOIN
    shortlinks ON shortlink_analytics.shortlink = shortlinks.shortlink
GROUP BY shortlink_analytics.shortlink
ORDER BY COUNT(shortlink_analytics.shortlink) DESC
LIMIT 10

そして、mysql_effected_rows()クエリがいくつかの行を返すかどうかをチェックする関数をチェックします

于 2013-01-09T11:18:00.243 に答える