-3

約2日間エラーが発生しています。誰かが私を助けてくれれば幸いです。

目的: 1 か月のすべての支払いを選択して配列に保存するクエリを作成したい。これをグラフにしたいので、支払いが行われなかった日も必要です。

これは私のコードです。私の問題は、それらを配列でキャッチしようとするときだと思います。メイン ページから関数を呼び出すと、すべての Web サイトがダウンします。

 function getDailyGraph($membership, $selectedMonth){
       $sql = "SELECT rate_amount AS payment, DAY(date) AS day FROM payments WHERE membership_id = ".$membership.
      " AND MONTH(date) = ".$selectedMonth." ORDER BY day";
      $query = $db->query($sql);
      $days = array();
      for ($i=1; $i <= 31 ; $i++) { 
        $payment = mysql_fetch_array($query);
        # code...
        if ($i == $payment['day']) {
          # code...
          $days[] = $payment['payment'];
        }else{
          $days[] = 0;
        }
      }
        return $days;
  }
4

2 に答える 2

0

無限ループが発生しているようです。またはで$i+1ある必要があるため、ループは終了せず、ページが終了/ロードされません。$i+=1$i++

e: 投稿が早すぎました。

コードに論理エラーもあります。日を選択していますが、何があっても増加しています。たとえば、支払いが 10 日、15 日、17 日にのみ行われた場合、ループが 1、2、3 にあり、一致しない可能性がある場合、直径 10、15、17 の 3 つの行をプルアップします。

クエリと日付の一致は別々に行います。

mysql_fetch_arrayから結果を取得し、結果の配列を格納する限り、1 つのループを実行します。おそらく、日ごとにインデックスが作成された別の場所で、それをループして、実際に利用可能な日を確認してください。

于 2013-09-27T23:09:09.140 に答える
0

まず、PDO を使用している場合、コードは次のようになります。

$sql = 'SELECT rate_amount AS payment, DAY(date) AS day FROM payments WHERE membership_id = ".$membership." AND MONTH(date) = ".$selectedMonth." ORDER BY day';
foreach ($db->query($sql) as $payment) {
    //do something with $payment['dia'], $payment['payment'], etc...     
}

mysl_* 関数を使用している場合は、mysqli_* を考慮する必要があり、コードは次のようになります。

$sql = 'SELECT rate_amount AS payment, DAY(date) AS day FROM payments WHERE membership_id = ".$membership." AND MONTH(date) = ".$selectedMonth." ORDER BY day';

/* connection to database */
$link = mysqli_connect("localhost", "my_user", "my_password", "my_database");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Select */
if ($result = mysqli_query($link, $sql)) {
    //work with your data here
    while($row = mysqli_fetch_array($result)){
        //do something with $payment['dia'], $payment['payment'], etc...
    }

    //free memory
    mysqli_free_result($result);
}else{
    echo "Error in query";
}
于 2013-09-27T23:36:49.467 に答える