【发布时间】:2011-12-24 20:02:55
【问题描述】:
我设置了一个 cron 作业,每 30 分钟运行一次以下脚本,基本上这个脚本从 stories 表中选择文章信息,其中字段 showing=0 并且它比计数与该文章相关的投票,投票位于 votes 表中。投票表中的 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,并为它们添加了大于或小于 (9, -9) 的投票值。但是在 cron 作业运行后没有任何变化。
-
检查您的系统日志以确保脚本实际运行。还要检查你的 php 错误日志。
-
这意味着您的查询无效。通过 mysql 客户端运行它以获取更多信息,或在 php 中回显
mysql_error()。 -
除了实际运行查询外,您到处都有错误处理。检查
mysql_query()的结果并在那里附加错误处理。附带说明:如果您不打算以数字方式访问查询结果,请改用mysql_fetch_assoc()。