带有循环变量的PHP SQL where语句


PHP SQL where statement with loop variable

使用带有for循环变量的where子句从数据库中检索数据时遇到问题。该代码当前可以从数据库中检索数据,但是从数据库库存中检索的值。在for循环中的数字1处,它仍然很好。但当它进入下一个。所收集的数据是1和2的组合。当它最终到达循环的末尾时,所有的数据都会显示出来。必须编辑代码的哪一部分才能将数据显示更改为非累积

<?php
$sectorcount = $row_SectorCount['COUNT(*)'];
//number of rows in database
$spendingname= array();
$spendingpercent= array();
$spendingid= array();
?>
// Add some data to the details pie chart
options_detail_1.series.push({ name: 'Tax Spending Detail', data: [] });
$(document).ready(function() {
chart_main = new Highcharts.Chart(options_main);
chart_detail_1 = new Highcharts.Chart(options_detail_1);
})
function push_pie_detail(sectorid) {
switch(sectorid)
{
<?php 
 for ($i=1; $i<=$sectorcount; $i++)
    {
    echo    "case 'sector".$i."':" ,
            "setTimeout", "(" , '"chart_detail_1.series[0].remove(false)", 1000);' ,
            "chart_detail_1.addSeries(options_detail_1, false);" , 
            "chart_detail_1.series[1].setData( [";
            mysql_select_db($database_conn2, $conn2);
            $query_Spending = "SELECT CONCAT(spending.SectorID,     spending.ExpenditureID) AS 'SpendingID',
            expenditure.ExpenditureName, spending.SpendingPercent, spending.SectorID
            FROM spending
            INNER JOIN expenditure ON spending.ExpenditureID = expenditure.ExpenditureID
            WHERE spending.SectorID = '.$i.'";
            $Spending = mysql_query($query_Spending, $conn2) or die(mysql_error());
            $totalRows_Spending = mysql_num_rows($Spending);
            while($row_Spending = mysql_fetch_assoc($Spending))
            {
            $spendingname[] = $row_Spending['ExpenditureName'];
            $spendingpercent[] = $row_Spending['SpendingPercent'];
            $spendingid[]= $row_Spending['SpendingID'];
            }
            mysql_free_result($Spending);
            $a = 0;
            foreach ( $spendingid as $sgi => $sgid)
            {
            if ($a > 0) echo ', '; // add the comma
            echo    "{
                name: '$spendingname[$sgi]',
                y: ". $spendingpercent[$sgi] * $tax .",
                id: ' $sgid',
                    }";
            $a++;   
            }
            echo    "], false);" ,
                    "chart_detail_1.redraw();",
                    "break;";
            }       

            ?>
            default:
            break;
        }

}

你需要在where子句中用'x'单引号包装你的变量,否则它会认为你的意思是id=true,这对所有人来说都是真的=)我最近遇到了同样的问题

编辑:与其说花在哪里。SectorID=$i,您应该有'somevalue',只需创建一个新变量$example="'"$我。"'",并在where子句中使用该变量

我写了一个函数,它接受文本并用单引号将其包装,只针对这种情况

在循环中移动$spendingname = array();和其他数组定义。