Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете разликата в датата

Важно е първо да разработите вашите MySQL заявки и да ги усъвършенствате извън контекста на PHP кода, след което да интегрирате заявката, след като я накарате да работи по начина, по който ви е необходим в MySQL клиентско приложение като MySQL Workbench, PHPMyAdmin и др.

Във вашата заявка външният SELECT не е необходимо и самата вътрешна заявка изглежда почти правилна, но начинът, по който се опитвате да я изпълните с PDO, е грешен.

SELECT
  due_date,
  date_paid,
  DATEDIFF(due_date, date_paid) as date_interval
FROM $tbl_name
WHERE
  DATEDIFF(due_date, date_paid) <= $setDay
ORDER BY trans_id DESC
LIMIT $start, $limit

Сега, за да го изпълните в PDO, трябва да използвате prepare()/bindParam()/execute() за да създадете подготвен израз, обвържете параметри и го изпълнете с тези параметри (не можете обаче да обвържете името на таблицата - това трябва да остане променлива). В текущия ви код имате смесване на PDO::query() метод, използван за прости статични заявки и PDOStatement::execute() метод, който се използва за изпълнение на подготвен оператор. Трябва да използвате метода на подготвения израз, а не query() .

// Setup the statement with named parameters like :setDay
$sql = "
    SELECT
      due_date,
      date_paid,
      DATEDIFF(due_date, date_paid) as date_interval
    FROM $tbl_name
    WHERE
      DATEDIFF(due_date, date_paid) <= :setDay
    ORDER BY trans_id DESC
    LIMIT :start, :limit
";
// Make PDO throw useful errors on failure
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Prepare the statement
$stmt = $pdo->prepare($sql);

// Bind your 3 parameters and execute it
$stmt->bindParam(':setDay', $setDay, PDO::PARAM_INT);
$stmt->bindParam(':start', $start, PDO::PARAM_INT);
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->execute();

// Fetch your rows returned from the query
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Do something with them
print_r($rows);

Винаги препоръчвам да прекарвате време с този PDO урок за MySQL разработчици което поставя използването на PDO в контекста на стария mysql_*() API, с който може би вече сте запознати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Операция на подмножество на MYSQL

  2. Внедряване на коментари и харесвания в базата данни

  3. Как да върнете таблицата с помощта на mysql функция

  4. Схема на база данни Laravel, чужда с нула

  5. Използване на недефинирана константа DB_USER – предполага се „DB_USER“