Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么这个脚本不起作用?(奇数/偶数)_Php_Mysql - Fatal编程技术网

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

Php 为什么这个脚本不起作用?(奇数/偶数),php,mysql,Php,Mysql,我一直在写一个脚本,根据用户是否被分配了偶数或奇数注释id来显示用户的名称。它从同一数据库中的两个不同表中调用数据。以下是表格信息: 表“comments”包含commentid、tutorialid、name、date列:表“winners”包含pool、pool2、pool3、pool4、pool5、pool6、pool7列。表“comments”有多行,这些行通过用户输入进行更新。表“winners”中只有一行数字是每天随机生成的 显示结果1和结果2的脚本的第一部分工作正常。不起作用的部分

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

表“comments”包含commentid、tutorialid、name、date列:表“winners”包含pool、pool2、pool3、pool4、pool5、pool6、pool7列。表“comments”有多行,这些行通过用户输入进行更新。表“winners”中只有一行数字是每天随机生成的

显示结果1和结果2的脚本的第一部分工作正常。不起作用的部分是调用用户名的部分。我只想显示与显示结果相关的用户名,即如果选择了结果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;
}
?>

有人能找出这不起作用的原因吗?

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

$query = "SELECT * FROM comments where mod(`commentid`,2) = $pool_result";
在commentid周围添加引号将其视为字符串,并且不能用整数修改字符串。请尝试以下操作:

$query=从注释中选择*,其中commentid%2=$pool\u result


这是从以下堆栈问题中提取的:

您连接到数据库两次……哈哈,您说得对。我解决了这个问题,但仍然没有解决我的问题。嗯,我只是尝试了你的建议,在这行中,几乎每一个可能的组合都加上反勾,但我还是没有得到任何输出,或者errors@user1206214:如果独立运行该查询(例如,在命令行客户端中),是否会得到预期结果?这将修复该问题,非常感谢你,现在我不断得到错误,无法重新声明函数get_name。我需要在同一页上多次使用此脚本的变体Easy fix只是在每个名称实例后添加了数字1