Php 尝试分离循环结果

Php 尝试分离循环结果,php,Php,我正在做一个投票,我有一个php脚本来获取投票给这个投票选项的百分比。当我运行一个查询时,我只会得到选项的0。如何使每个$val1根据数据库中的行总数具有不同的数字 例如:投票选项1有一票,投票选项2有一票,投票选项3有0票,投票选项4有0票。查询将为选项3和选项4输出50个选项1、选项2和0 我的代码 $poll = $db->fetch("SELECT * FROM home_poll ORDER BY id DESC LIMIT 1"); $option_sql

我正在做一个投票,我有一个php脚本来获取投票给这个投票选项的百分比。当我运行一个查询时,我只会得到选项的0。如何使每个$val1根据数据库中的行总数具有不同的数字

例如:投票选项1有一票,投票选项2有一票,投票选项3有0票,投票选项4有0票。查询将为选项3和选项4输出50个选项1、选项2和0

我的代码

       $poll = $db->fetch("SELECT * FROM home_poll ORDER BY id DESC LIMIT 1");
   $option_sql = $db->query("SELECT total FROM home_polls_option WHERE poll_id = '" . $poll['id'] . "'");

        while ($row = mysqli_fetch_array($option_sql)) {
            $val1 = $row['total'];
        }

$poll_votess = $db->query("SELECT * FROM home_polls_vote WHERE poll_id = '" . $poll['id'] ."'");

$val2 = $poll_votess->num_rows;

$res = round ($val1 / $val2 * 100);
 $options1 .= ' <script>

    var doughnutData = [
            {
                value: ' . $res . ',
                color:"#F7464A"
            },
            {
                value : ' . $res . ',
                color : "#46BFBD"
            },
            {
                value : ' . $res . ',
                color : "#FDB45C"
            },
            {
                value : '. $res.',
                color : "#949FB1"
            }

        ];

var myDoughnut = new Chart(document.getElementById("canvas").getContext("2d")).Doughnut(doughnutData);

</script>';
数据库:

家庭投票:
home_polls_option:

在while循环中,您只接受了$val1最新的行值,因为它是0票,所以您得到了0票。您需要将它放入数组中,然后再使用$res作为数组,这样您就可以在脚本中打印不同的值

编辑:

你可以试试这样的。首先获取投票总数,然后将百分比放入while循环的结果中

$poll = $db->fetch("SELECT * FROM home_poll ORDER BY id DESC LIMIT 1");
$option_sql = $db->query("SELECT total FROM home_polls_option WHERE poll_id = '" . $poll['id'] . "'");
$poll_votess = $db->query("SELECT * FROM home_polls_vote WHERE poll_id = '" . $poll['id'] ."'");

$number_of_votes= $poll_votess->num_rows;

while ($row = mysqli_fetch_array($option_sql)) {
    $res[] = round ($row['total'] / $number_of_votes * 100);
}

$options1 .= '<script>

    var doughnutData = [
            {
                value: ' . $res[0] . ',
                color:"#F7464A"
            },
            {
                value : ' . $res[1] . ',
                color : "#46BFBD"
            },
            {
                value : ' . $res[2] . ',
                color : "#FDB45C"
            },
            {
                value : '. $res[3].',
                color : "#949FB1"
            }

        ];

var myDoughnut = new Chart(document.getElementById("canvas").getContext("2d")).Doughnut(doughnutData);

</script>';

使用mysql本身进行计算,这将避免许多代码行,并且易于处理


我的html:AAAA和sql注入:。你已经为你的数据库创建了一个漂亮的攻击向量。为什么不用MySQL连接查询来获得结果,没问题。如果有用,请投票表决。谢谢
$sql = " SELECT ROUND(COUNT(hpv.id)/hpo.total * 100) AS res 
            FROM  home_polls_option AS hpo
            JOIN home_polls_vote AS hpv ON hpv.poll_id = hpo.poll_id
            WHERE hpv.poll_id=$poll ['id']
            GROUP BY hpo.value";