Php 尝试分离循环结果
我正在做一个投票,我有一个php脚本来获取投票给这个投票选项的百分比。当我运行一个查询时,我只会得到选项的0。如何使每个$val1根据数据库中的行总数具有不同的数字 例如:投票选项1有一票,投票选项2有一票,投票选项3有0票,投票选项4有0票。查询将为选项3和选项4输出50个选项1、选项2和0 我的代码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
$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";