2012-01-04 10 views
0

こんにちは私はループや何かの中でこのステートメントを変更してこの文を13回繰り返したいと思います。 "WHERE spending.SectorID = 1,2,3,4,5,6,7,8,9,10,11,12,13"どうすればこのコードを12回以上入力しなくても正常に実行できますか?そして、私は〜where sectorid = 1;のようなものの、個別にデータを表示するだろうあなただけのスクリプトの主要部分をラップする必要がPHP Multiarray LOOP WHERE CLAUSE

<?php 
$spendingname= array(); 
$spendingpercent = array(); 
$spendingid = array(); 

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 = 1"; 
$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); 
?> 
+0

しかし、どのように配列がそれを認識しますか?私は$ {'支出'する必要がありますか$ i} = array(); –

答えて

1
<?php 
    $spendingname= array(); 
    $spendingpercent = array(); 
    $spendingid = array(); 

    mysql_select_db($database_conn2, $conn2); 
    for($x=1;$x<14;$x++) 
    { 
    $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 = $x"; 
    $Spending = mysql_query($query_Spending, $conn2) or die(mysql_error()); 
    $totalRows_Spending = mysql_num_rows($Spending); 
    while($row_Spending = mysql_fetch_assoc($Spending)) 
    { 
    $spendingname[$x] = $row_Spending['ExpenditureName']; 
    $spendingpercent[$x] = $row_Spending['SpendingPercent']; 
    $spendingid[$x]= $row_Spending['SpendingID']; 
    } 
    mysql_free_result($Spending); 
    } 

//To access and print all elements. 
for($x=1;$x<count($spendingname);$x++) 
{ 
echo "The value for query $x"; 
echo $spendingname[$x]." ".$spendingpercent[$x]." ".$spendingid[$x]."<br><br><br>"; 
} 

?> 
+0

配列は13個の値をすべてsimunateaに格納するように管理しますか?> –

+0

13個のクエリの結果は配列要素に別々に格納されます。例を実行すると分かります。 –

1

その特定のクエリを開始するためにボタンで表に属して:

for ($n in range(1,13)) { 

または

for ($n=1; $n<=13; $n++) { 

$n

で一定の 1を置き換えます

編集:またはあなたが最終的にデータを提示する方法に応じて、あなたはからSQLを変更することができるかもしれない:

WHERE spending.SectorID >= 1 AND spending.SectorID <= 13 

または

WHERE spending.SectorID IN (1,2,3,4,5,6,7,8,9,10,11,12,13) 

WHERE spending.SectorID = 1 

( MySQLのオプティマイザが両方とも効率的でなければならないため、

0

WHERE spend.SectorID > 0 AND spending.SectorID < 13

0

IN句を使用してください。具体的には、WHERE spending.SectorID IN ('" . implode("','", range(1,13)) ...

1

あなたはしないでくださいしたくない場合は、1つのクエリで十分な場合は13個のデータベースクエリを作成します。次WHERE句で一度クエリ、結果を反復処理:

WHERE spending.SectorID <= 13 "; 

-OR-

WHERE spending.SectorID IN (1,2,3,4,5,6,7,8,9,10,11,12,13)"; 
+0

私は〜のようにデータを個別に表示したいと思います。その特定のクエリを開始するためのボタンが付いたテーブルに属しています。可能ですか?私は一度にすべてを表示したくない。 –

+0

はい、そうです。私は[[mysql_fetch_array() '](http://php.net/manual/en/function.mysql-fetch-array.php)と[' mysql_fetch_assoc() '](http: /php.net/manual/en/function.mysql-fetch-assoc.php) – rdlowrey

1

あなたはパラメータでPreparedStatementを使用することができ、その後、あなたのように、クエリのループを実行することができ結果の検索と同様に。

しかし、異なる結果で何か違うことをしたいのでなければ、その理由は分かりません。それ以外の場合は、

WHERE spending.SectorID BETWEEN 1 AND 13 ORDER BY spending.SectorID 

を使用してください。

0

コードを特定の回数だけループする場合は、forループを使用できます。ここには13回ループすることができるPHPスクリプトがあります。

$loops = 13; 
for ($i = 1; $loops <= $i; $i++) { 
    //Your code// 
} 

また、「WHERE spending.SectorID =で "WHERE spending.SectorID = 1,2,3,4,5,6,7,8,9,10,11,12,13" を交換する必要があります$ i "であり、これはコードがループするたびにSQL文が何を検索しているかを示します。

これが役に立ちます。

0
<?php 
$sectorcount = $row_SectorCount['COUNT(*)']; 
//number of rows in database 
mysql_select_db($database_conn2, $conn2); 
for($x=1; $x<=$sectorcount; $x++) 
{ 
${'spendingname'.$x} = array(); 
${'spendingpercent'.$x} = array(); 
${'spendingid'.$x} = array(); 

$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 = $x"; 
$Spending = mysql_query($query_Spending, $conn2) or die(mysql_error()); 
$totalRows_Spending = mysql_num_rows($Spending); 

while($row_Spending = mysql_fetch_assoc($Spending)) 
{ 
${'spendingname'.$x}[] = $row_Spending['ExpenditureName']; 
${'spendingpercent'.$x}[] = $row_Spending['SpendingPercent']; 
${'spendingid'.$x}[]= $row_Spending['SpendingID']; 
} 
mysql_free_result($Spending); 
}     
?> 

私はそれを解決することができましたが、spendingnameは取得できませんでした。 spendingnameは唯一の文字列で、else percentとidとすべての整数です。なぜこの問題が発生するのですか