2012-02-13 65 views
0

我一直在编写一个脚本来显示用户的名字,这取决于他们是否分配了偶数或奇数的注释ID。它调用来自同一个数据库中2个不同表的数据。以下是表格信息:为什么这个脚本不工作? (奇数/偶数)

表'comments'包含纪念,tutorialid,名称,日期的列:表'winners'具有列池,池2,池3,池4,池5,池6,池7。表'注释'具有多个通过用户输入更新的行。表'获奖者'只有1行,每天随机生成数字。

显示“结果1”和“结果2”的脚本的第一部分工作正常。不工作的部分是调用用户名的部分。我只想显示与显示IE的结果相关的用户名,如果选择了结果1,那么我只想要显示甚至是'commentid'的用户名。

<?php 
$db = mysql_connect('localhost', 'username', 'pass') or die("Database error"); 
mysql_select_db('dbname', $db); 

$query = "SELECT pool FROM winners"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
    if ($row['pool'] % 2) { 
     echo "<h4>Result 1</h4>"; 
     $names = get_names(1); 
     foreach($names as $name) { 
      echo $name . "<br/>"; 
     } 
    } else { 
     echo "<h4>Result 2</h4>"; 
     $names = get_names(0); 
     foreach($names as $name) { 
      echo $name . "<br/>"; 
     } 
    } 

function get_names($pool_result) 
{ 
    $name_array = array(); 

    $query = "SELECT * FROM comments where mod('commentid',2) = $pool_result"; 
    $result = mysql_query($query); 

    while ($row = mysql_fetch_array($result)) { 
     array_push($name_array, $row['name']); 
    } 

    return $name_array; 
} 
?> 

任何人都可以找出为什么这不起作用吗?

+0

你连接到数据库两次... – Borealid 2012-02-13 23:23:57

+0

笑,你是对的。我修正了这个问题,但它仍然无法解决我的问题。 – user1206214 2012-02-13 23:29:07

回答

0

各地commentid把它当作一个字符串添加引号,你不能用一个整数国防部的字符串。而不是尝试以下操作:

$query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result";

这是从下面的堆栈问题采取:select row if the "value" % 2 = 1. MOD()

+0

这个修好了,非常感谢 – user1206214 2012-02-13 23:57:48

+0

没问题。很高兴工作! – 2012-02-14 00:17:21

+0

呃,现在我不断收到错误无法重新声明函数get_names。我需要在同一页面多次使用此脚本的变体 – user1206214 2012-02-14 00:32:58

1

带有mod的SELECT语句不引用该字段。应该反引号而不是单引号。单引号表示一个字符串常量,这会导致一个恒定的结果集(mod('commentid',2)看起来具有0的结果)。它应该是这样的:

$query = "SELECT * FROM comments where mod(`commentid`,2) = $pool_result"; 
+0

嗯,我只是试过你的建议,反驳几乎每一个组合可能在该行,我仍然得不到输出或错误 – user1206214 2012-02-13 23:34:37

+0

@ user1206214:如果你独立运行该查询(例如,在命令行客户端),你得到预期的结果? – 2012-02-13 23:41:43

相关问题