【发布时间】:2013-03-06 18:47:52
【问题描述】:
我有一个充满推文的数据库表,其中一列是“主题”。当我将推文存储在数据库中时,我会检查是否存在特定的关键字,无论推文匹配哪个关键字,都会将主题设置为该词。
我正在检查的关键字:比伯,糟透了
推文:天哪,我爱比伯!
已存储主题: bieber
我正在检查的关键字:比伯,糟透了
推特:这个真空吸尘器真的很烂!
已存储主题:糟透了
在我的网站上,我列出了这些主题在 Twitter 上“声音”的份额。见下文:
这基本上是(主题为“KEYWORD HERE”的推文数)/(数据库中的推文总数)。
条形图如下所示:
<div class="barChart" data-value="2" data-title="eCircle"></div>
我不是最好的 SQL 语句和 PHP 来完成这个。我可以暴力破解并遍历每个单独的关键字,但我不想对我的数据库进行那么多调用...似乎很浪费。
我可以取回总计数,然后是一个大查询中每个关键字的计数吗?就像它以数组或其他形式返回?
错误尝试:
<?php
include 'php/Connect.php';
$totalTweets = 0;
$ct = new Connect();
$con = $ct->connect();
$sql_query =
"SELECT COUNT(*) FROM tweets";
$res = mysql_query($sql_query, $con);
if (!$con | !$res) {
echo "Problems connecting...";
}
else {
mysql_close($con);
while($row = mysql_fetch_assoc($res)) {
$totalTweets = $row['count(*)'];
}
}
$sql_query =
"SELECT COUNT(*), subject FROM tweets
WHERE subject = 'KEYWORD HERE'";
$res = mysql_query($sql_query, $con);
if (!$con | !$res) {
echo "Problems connecting...";
}
else {
mysql_close($con);
while($row = mysql_fetch_assoc($res)) {
$firstKeyword = $row['subject'];
$firstKeywordCount = $row['count(*)'];
}
}
echo("<div class='barChart' data-value='".($firstKeywordCount/$totalTweets*100)."' data-title='$firstKeyword'></div>");
// CONTINUE THIS UNTIL ALL KEYWORDS/SUBJECTS HAVE BEEN DONE
?>
【问题讨论】:
-
现在编辑。一分钟。
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。 -
我会在弄清楚这个问题后解决这个问题。谢谢!
-
嗯,如果你有低级别的访问权限,
myisam_ftdump -c工作得很好......