Получить данные таблицы SQL за текущий месяц, используя подготовленный оператор PHP - PullRequest
0 голосов
/ 20 октября 2018

Вот код, который я использую для получения данных текущего месяца из таблицы wp_formdata

HTML:

<div class="result" id="result" name="result">

            <?php echo $head1; ?> <?php echo $out; ?> <?php echo $head2; ?> 
</div>

PHP:

if ($_POST['result_options'] == 'Current_Month') {   

    $now = new \DateTime('now');
    $CurrMonth = $now->format('m');
    $CurrYear = $now->format('Y');

    $sql ="Select date,select_bank,entry_type,income_cat,expense_cat,amount,expense_cat_sub from wp_formdata WHERE MONTH(?) = MONTH(CURRENT_DATE()) AND YEAR(?) = YEAR(CURRENT_DATE()) order by date ";

    $stmt = mysqli_stmt_init($conn);
    if(!mysqli_stmt_prepare($stmt,$sql)) {
        $message =  '<h1 style="color:red;padding-top:5%;">SQL Error !!</h1>';

    } else {
        mysqli_stmt_bind_param($stmt,"ss", $CurrMonth, $CurrYear);
        mysqli_stmt_execute($stmt);
        $result= mysqli_stmt_get_result($stmt);
        $out = "";

        while($row = mysqli_fetch_assoc($result)) {
            $out .= "<tr><td>".$row["date"]."</td><td>".$row["select_bank"]."</td><td>".$row["entry_type"]."</td><td>".$row["income_cat"]."</td><td>".$row["expense_cat"]."</td><td>".$row["expense_cat_sub"]."</td><td>".$row["amount"]."</td></tr>";
        }
    }
}

Iпроверил соединение с базой данных и оно работает как положено.Я также проверил значения переменных $CurrMonth и $CurrYear:

echo $CurrMonth; //will give output 10 

echo $CurrYear;  //will give output 2018

Но я не получаю никаких результатов поиска.Любые предложения, чтобы решить это?

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Вы сравниваете текущую дату PHP с текущей датой БД.

В вашей строке SQL вы должны заменить MONTH(?) и YEAR(?) на MONTH(date) и YEAR(date).На этом этапе вы должны удалить mysqli_stmt_bind_param($stmt,"ss", $CurrMonth, $CurrYear);, поскольку строка SQL не имеет параметров.

0 голосов
/ 20 октября 2018

Сравнение месяца и года в вашем SQL выглядит некорректно, вы сравниваете текущий месяц (и извлекаете месяц из него MONTH(?)) с месяцем текущей даты (MONTH(CURRENT_DATE())).Вы можете уйти без использования каких-либо параметров, так как вам нужно сравнить (я предполагаю) месяц даты из записи (MONTH(date)) с текущим месяцем (то же самое для года).

$sql ="Select date,select_bank,entry_type,income_cat,expense_cat,
                 amount,expense_cat_sub 
          from wp_formdata 
          WHERE MONTH(date) = MONTH(CURRENT_DATE()) 
                   AND YEAR(date) = YEAR(CURRENT_DATE()) 
          order by date ";

Этовсегда стоит проверить SQL в чем-то вроде PHPMyAdmin, чтобы убедиться, что он дает результаты после того, как вы запустите его в PHP.

Если вам нужно сделать это в течение любого другого месяца, вы можете использовать параметры, но неизвлечь из него месяц ...

$sql ="Select date,select_bank,entry_type,income_cat,expense_cat,
                 amount,expense_cat_sub 
          from wp_formdata 
          WHERE MONTH(date) = ?
                   AND YEAR(date) = ?
          order by date ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...