我设置了一个cron作业,每30分钟运行一次以下脚本,基本上这个脚本从 story 表中选择文章信息,其中字段显示= 0 并且它比计数更多与该文章相关的投票,投票位于投票表中。投票表中的 itemname_field 等于故事表中的 id 字段。
如果您需要有关数据库结构和投票系统的更多信息,我将在此深入介绍:
Set a cron job to update article information depending on its vote values
<?php
mysql_connect("localhost","username","password") or die (mysql_error("There was an error in connection"));
mysql_select_db("database") or die (mysql_error("There was an error in connection"));
$query = "select sum(vt.vote_value) as vote_value, vt.item_name from Votes vt join stories st on st.id = vt.item_name and st.showing = 0 group by vt.item_name";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
if($row['vote_value'] > 9) {
$showing = 1;
}
else if($row['vote_value'] < -9) {
$showing = 2;
}
else {
$showing = 0;
}
$query2 = "UPDATE `stories` SET `showing` = $showing WHERE `id` = '".$row['item_name']."'";
mysql_query($query2);
}
?>
任何人都可以提出原因,为什么这个脚本无效?如果脚本中的一切都没问题,那么它是否需要在cron作业中完成?
编辑:当我在浏览器中运行脚本时,会出现以下错误:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
这一行是while($row = mysql_fetch_array($result))
答案 0 :(得分:1)
问题出在这一部分:
$query = "... from Votes vt join ...";
它不应该是大写“V”。
答案 1 :(得分:1)
您引用的错误消息表示您的查询中有错误。通过mysql客户端运行它以获取更多信息,或者在php中回显mysql_error()
。
在这种情况下mysql_query()
返回布尔值false,您可以使用它来进行错误处理。