Внедрение SQL в контроллер в codeignitor

Я пытаюсь ввести SQL с помощью метода DATE_FORMAT, и это дает мне ошибку синтаксического анализа. Но запрос отлично работает в phpmyadmin. Ниже вы можете найти мой код, который является моим контроллером.

public function index() {
  $sql = "SELECT DATE_FORMAT('added_date', "%M") AS Month, SUM(total) FROM tbl_order GROUP BY DATE_FORMAT('added_date', "%M")";
  $query = $this->db->query($sql);
  $orderData= $query->result_array();
  $data["orderData"] = $orderData;
  var_dump($data);die;
  $this->load->view('admindashboard/index.php',$data);
}

Я также прикрепил сообщение об ошибке Внедрение SQL в контроллер в codeignitor

Что такое added_date, это столбец из таблицы tbl_order?

D-Shih 30.10.2018 19:51

По возможности также вставляйте ошибку в виде обычного текста. Это помогает другим, у кого есть аналогичная проблема, найти этот вопрос и любые связанные с ним решения.

tadman 30.10.2018 20:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
38
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я думаю, вы можете попробовать использовать '%M' вместо "%M", потому что он разделит строку на ".

$sql = "SELECT DATE_FORMAT(added_date, '%M') AS Month, 
SUM(total) 
FROM tbl_order 
GROUP BY DATE_FORMAT(added_date, '%M')";

Рад помочь :)

D-Shih 30.10.2018 20:08

Если вы используете строку в двойных кавычках, вам нужно использовать внутри нее одинарные кавычки. или разделяет ваши двойные кавычки, например "...\"quoted\"...", чтобы PHP знал ваше намерение.

tadman 30.10.2018 20:28

Я предлагаю использовать одинарную кавычку для всей строки и внутри нее использовать двойные кавычки. я думаю, это решит ошибку.

$sql = 'SELECT DATE_FORMAT("added_date", "%M") AS Month, 
SUM(total) FROM tbl_order 
GROUP BY DATE_FORMAT("added_date", "%M")';

Нет, у меня такая же ошибка. Но предложение Д-шаха сработало отлично. Спасибо

Iishfaaq Ismath 30.10.2018 20:04

Добро пожаловать и извините, но счастлив, что ваша ошибка решена :)

Asif Thebepotra 30.10.2018 20:09

Если added_date представляет собой столбец, вы должны обратить особое внимание на используемые цитаты. В MySQL столбцы разделяются обратными кавычками, но это необходимо только в том случае, если они конфликтуют с любым зарезервированные ключевые слова.

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

 $query = $this->db->query("SELECT DATE_FORMAT(added_date, \"%M\") AS Month, SUM(total) FROM tbl_order GROUP BY Month");

Если у вас есть текстовый редактор с подсветкой синтаксиса, который в наши дни очень важен, вы бы увидели, как выделение строки немедленно прекращается на том, что воспринимается как заключительная кавычка в исходном коде. Это предупреждение, что у вас синтаксическая ошибка.

Другое решение - использовать два разных типа кавычек. Режим MySQL по умолчанию допускает использование строковых значений в двойных или одинарных кавычках:

 $query = $this->db->query('SELECT DATE_FORMAT(added_date, "%M") AS Month, SUM(total) FROM tbl_order GROUP BY Month');

На практике обычно лучше использовать строки в одинарных кавычках для запросов по той единственной причине, что предотвращается случайное внедрение SQL: переменные типа $ интерполируются нет в режиме одинарных кавычек.

Другие вопросы по теме