我的php循环没有使用MYsql填充我的数据库

时间:2016-11-18 11:51:13

标签: php mysql loops increment

我有以下Mysql表和PHP代码。

MySQL:我从Store表中选择商店数量。这将返回我的商店列表。

我还有一个带信息的现金表

PHP: 循环发生在一天,假设是一天中的天数。

在while循环中,我执行一个SQl选择,根据日期和商店从cashup表中返回我的值。

在循环中,我增加了我的日子以允许在我的所有商店中循环31天以返回现金金额值。

//loop days
$numberofdays = 31;
$monthyear = NOV_2016;
$x = 1;
        //loop days
        do {
            //string days info
            $thedate =  $x . '_' . $monthyear;

            if (strlen($thedate) == 10){
                    $thedate = '0' . $thedate;
                    }
                //Do select 
                mysql_select_db($database_localhost, $localhost);
                $query_showr = "select sum(cashup_cash) from cashiercashdata where cashup_date LIKE '$thedate' and cashup_store = '$store'";
                $showr = mysql_query($query_showr, $localhost) or die(mysql_error());
                while ($row_showr = mysql_fetch_assoc($showr))
                        {
                            //loop through record rows
                            foreach($row_showr as $row)
                                {
                                ///////$insertday = "recon_d" . $x . "_received";   
                                echo " Store : " .  $store . " Counter : " .  $x . ' : ' . gettype($x) . ' : ' . $row . ' : ' . gettype($row) . '<br>';
                            mysql_query("
                            update bankrecon
                            set recon_d10_received = '$row'
                            WHERE recon_store = '$store'
                            and recon_month = '$monthyear'
                            ");
                    }
                        }
$x++;
        } while ($x <= $numberofdays);

PHP: 发生循环,其中numberofdays(整数)假设为一个月中的天数。

在while循环中,我执行一个SQl选择,根据日期和商店从cashup表中返回我的值。

在循环中,我增加了我的日子以允许在我的所有商店中循环31天以返回现金金额值。

这个回显正确显示我的信息,但是如果numberofdays设置为静态10,我在循环中的更新只会插入信息;

Store : centralpark Counter : 10 : integer : 56277.40 string
Store : ficksburg Counter : 10 : integer : 42698.14 string
Store : kroonstad Counter : 10 : integer : 28486.70 string
Store : maitland Counter : 10 : integer : 55988.40 string
Store: od Counter : 10: integer 41412.10 string

它在显示时工作正常但不更新目标表。 任何人都可以向我解释为什么循环的numberofdays信息不会触发列的更新,但如果numberofdays是静态的,它会更新。

enter image description here

2 个答案:

答案 0 :(得分:0)

现在,很难确切地知道你的目标表是什么样的,但我猜它与你的UPDATE语句有关。

update bankrecon
    set recon_d10_received = '$row'
    WHERE recon_store = '$store'
    and recon_month = '$monthyear'

特别是这一点:set **recon_d10_received** = '$row'

这或许告诉桌子只在第10天更新吗?

答案 1 :(得分:0)

两个示例表sql:

#include <stdio.h>

int main()
{    
  char sentence [100];
  int i,letter_count=0;

  printf("Enter a sentence: ");
  fgets(sentence,100,stdin);

  for(i=0;sentence [i]!='\0';i++)
  {
    if(sentence [i]==' ' || sentence [i+1]=='\0')
    {
      if(letter_count%2==1)
      {
        printf("%c ",sentence [i-letter_count/2-1]);
      }
      letter_count=0;
    }
    else
    {
      letter_count++;
    }
  }
  putchar('\n');
  return 0;
}

和php本身:

CREATE TABLE `bankrecon` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `recon_d10_received` varchar(45) DEFAULT NULL,
  `recon_store` varchar(45) DEFAULT NULL,
  `recon_month` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `data and store` (`recon_store`,`recon_month`,`recon_d10_received`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;


CREATE TABLE `cashiercashdata` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cashup_cash` int(11) DEFAULT NULL,
  `cashup_date` varchar(45) DEFAULT NULL,
  `cashup_store` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

请记住:

  • 更改$ store var
  • 在使用insert-on-duplicate上的session_start(); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $mysqli = new mysqli("localhost", "someuser", "somepass", "somedb"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $store = 'somestrome'; $numberofdays = 31; $monthyear = 'NOV_2016'; $x = 1; //loop days do { //string days info $thedate = $x.'_'.$monthyear; if (strlen($thedate) == 10) { $thedate = '0'.$thedate; } $showr = $mysqli->query("select sum(cashup_cash) as cashup_cash from cashiercashdata where cashup_date LIKE '$thedate' and cashup_store = '$store'")->fetch_assoc(); if(!is_null($showr['cashup_cash'])){ $sql = " INSERT INTO bankrecon (recon_d10_received,recon_store,recon_month) VALUES ('".$showr['cashup_cash']."','$store','$monthyear') ON DUPLICATE KEY UPDATE recon_d10_received='".$showr['cashup_cash']."'"; $mysqli->query($sql); echo " Store : ".$store." Counter : ".$x.' : '.gettype($x).' : '.$showr['cashup_cash'].' : '.gettype($showr['cashup_cash']).'<br>'; } $x++; } while ($x <= $numberofdays); recon_storerecon_month列上保留UNIQUE KEY。
  • 更改数据库连接代码

还可以使用此PHP代码查看更多错误:

recon_d10_received