为什么这个脚本不起作用? (奇偶)

时间:2012-02-13 23:20:22

标签: php mysql

我一直在编写一个脚本,根据用户是否分配了偶数或奇数注释ID来显示用户名。它从同一数据库中的2个不同表中调用数据。这是表格信息:

表'comments'有列commentid,tutorialid,name,date:表'winners'有列pool,pool2,pool3,pool4,pool5,pool6,pool7。表'comments'有多行通过用户输入更新。表'获胜者'只有一行,每天随机生成数字。

显示“结果1”和“结果2”的脚本的第一部分正常工作。无效的部分是调用用户名的部分。如果选择了结果1,我只想显示与IE显示的结果相关的用户名,然后我只想要显示甚至是'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;
}
?>

有谁可以弄清楚为什么这不起作用?

2 个答案:

答案 0 :(得分:1)

带有mod的SELECT语句未引用该字段。应该是反引号而不是单引号。单引号表示字符串常量,这将导致常量结果集(mod('commentid',2)似乎具有0的结果)。它应该是这样的:

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

答案 1 :(得分:0)

commentid周围添加引号将其视为字符串,并且不能用整数修改字符串。请尝试以下方法:

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

这取自以下Stack问题:select row if the "value" % 2 = 1. MOD()