1 Востаннє редагувалося o_0ps (19.06.2015 21:22:26)

Тема: Doctrine ORM SQLSTATE[42000]

Народ, виникла проблема яка мене вже *$@% ... допекла...
Вот помилка:

Doctrine\DBAL\DBALException
File:
C:\xampp\htdocs\o0ps.ua\www\vendor\doctrine\dbal\lib\Doctrine\DBAL\DBALException.php:47
Message:
An exception occurred while executing 'INSERT INTO order (name, mail, text) VALUES (?, ?, ?)' with params ["dgrrger", "vdsvs@eger.ua", "67u76u67ut"]:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order (name, mail, text) VALUES ('dgrrger', 'vdsvs@eger.ua', '67u76u67ut')' at line 1
PDOException
File:
C:\xampp\htdocs\o0ps.ua\www\vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php:138
Message:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order (name, mail, text) VALUES ('dgrrger', 'vdsvs@eger.ua', '67u76u67ut')' at line 1

Вот Entity:

<?php

namespace Portfolio\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 *
 * @ORM\Entity
 * @ORM\Table(name="order")
 */
class Order
{
    /**
     * @var int
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @var string
     * @ORM\Column(type="string", length=255, nullable=false)
     */
    protected $name;
    /**
     * @var mail
     * @ORM\Column(type="text")
     */
    protected $mail;
    /**
     * @var text
     * @ORM\Column(type="text")
     */
    protected $text;

    /**
     * Get id.
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set id.
     *
     * @param int $id
     *
     * @return void
     */
    public function setId($id)
    {
        $this->id = (int)$id;
    }

    /**
     * Get name.
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set name.
     *
     * @param string $name
     *
     * @return void
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * Get mail.
     *
     * @return string
     */
    public function getMail()
    {
        return $this->mail;
    }

    /**
     * Set mail.
     *
     * @param string $mail
     *
     * @return void
     */
    public function setMail($mail)
    {
        $this->mail = $mail;
    }

    /**
     * Get text.
     *
     * @return string
     */
    public function getText()
    {
        return $this->text;
    }

    /**
     * Set text.
     *
     * @param string $text
     *
     * @return void
     */
    public function setText($text)
    {
        $this->text = $text;
    }

    /**
     * Helper function.
     */
    public function exchangeArray($data)
    {
        foreach ($data as $key => $val) {
            if (property_exists($this, $key)) {
                $this->$key = ($val !== null) ? $val : null;
            }
        }
    }

    /**
     * Helper function
     */
    public function getArrayCopy()
    {
        return get_object_vars($this);
    }
}

Контроллер:

<?php

namespace Portfolio\Controller;


use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class OrderController extends AbstractActionController
{
    const ENTITY_MANAGER = 'Doctrine\ORM\EntityManager';
    const ENTITY_PATCH = '\Portfolio\Entity\Order';
    const ORDER_FORM = '\Portfolio\Form\OrderForm';
    const ORDER_FILTER = '\Portfolio\Form\OrderFilter';

    const ROUTE_AFTER_INDEX = 'home';
    const ROUTE_AFTER_ADD = 'home';

    const ORDER_IS_NOT_EXISTS = 'Файл не знайдено';
    const ERROR = 'Невідома помилка. Попробуйте ще раз';
    const ERROR_INVALID_FORM = 'Форма неправильно заповнена. Попробуйте ще раз';

    /**
     * @var OrderForm
     */
    public $OrderForm;

    /**
     * @return array|\Zend\Http\Response
     */
    public function indexAction()
    {
        return $this->redirect()->toRoute(static::ROUTE_AFTER_INDEX);
    }

    /**
     * @return \Zend\Http\Response|ViewModel
     */
    public function addAction()
    {
        $form = $this->getOrderForm();
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost()->toArray();
            $form->setData($data);
            if ($form->isValid()) {
                $objectManager = $this->getServiceLocator()->get(static::ENTITY_MANAGER);
                $entityPatch = static::ENTITY_PATCH;
                $order = new $entityPatch();
                $order->exchangeArray($form->getData());
                $objectManager->persist($order);
                $objectManager->flush();
                return $this->redirect()->toRoute(static::ROUTE_AFTER_ADD);
            } else {
                return new ViewModel(array(
                    'error' => static::ERROR_INVALID_FORM,
                    'form' => $form
                ));
            }

        }
        return new ViewModel(array(
            'form' => $form
        ));
    }

    /**
     * @return UploadFilterForm|\Portfolio\Form\FileUploadForm
     */
    public function getOrderForm()
    {
        if (!$this->OrderForm) {
            $orderForm = static::ORDER_FORM;
            $orderFilter = static::ORDER_FILTER;
            $this->OrderForm = new $orderForm();
            $this->OrderForm->setInputFilter(new $orderFilter());
        }
        return $this->OrderForm;
    }
}

module.config:

...
'doctrine' => array(
        'driver' => array(
            'portfolio_entity' => array(
                'class' =>'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'paths' => array(__DIR__ . '/../src/Portfolio/Entity')
            ),
            'orm_default' => array(
                'drivers' => array(
                    'Portfolio\Entity' => 'portfolio_entity',
                )
            )
        )
    )
...

А це БД:

http://replace.org.ua/misc.php?action=pun_attachment&amp;item=904&amp;download=0

А весь прикол в тому, що в цьому самому модулі є інший enity для роботи з портфоліо і він пашить чудово...
В чому проблема?

Post's attachments

Записати.JPG 48.08 kb, 249 downloads since 2015-06-19 

2

Re: Doctrine ORM SQLSTATE[42000]

Який запит виконуєте?
Що це 'order (name, mail, text) VALUES ('dgrrger', 'vdsvs@eger.ua', '67u76u67ut')'  ? Особливо перше слово в помилці

3 Востаннє редагувалося o_0ps (21.06.2015 10:44:58)

Re: Doctrine ORM SQLSTATE[42000]

CrazyFreeMan написав:

Який запит виконуєте?
Що це 'order (name, mail, text) VALUES ('dgrrger', 'vdsvs@eger.ua', '67u76u67ut')'  ? Особливо перше слово в помилці

Я ніякі SQL запити не виконую, я використовую її інтерфейс, а запит ось тут:

$objectManager = $this->getServiceLocator()->get(static::ENTITY_MANAGER);
                $entityPatch = static::ENTITY_PATCH;
                $order = new $entityPatch();
                $order->exchangeArray($form->getData());
                $objectManager->persist($order);
                $objectManager->flush();

І прикол в тому, що в запиті помилок неможе бути, адже я використовую тільки інтерфейс Doctrine ORM, а не DQL,
і аналогічні запити я використовую завжди, і завжди працює, а тут ....

4

Re: Doctrine ORM SQLSTATE[42000]

o_0ps, це лише свідчить що і ви, і ваша ORM анічогісінько не шарять у зарезервованих словах SQL. І це сумно.

Подякували: Djalin1

5 Востаннє редагувалося o_0ps (21.06.2015 21:46:03)

Re: Doctrine ORM SQLSTATE[42000]

Lordie написав:

o_0ps, це лише свідчить що і ви, і ваша ORM анічогісінько не шарять у зарезервованих словах SQL. І це сумно.

А цей ваш пост що свідчить? Я чудово розбираюся в SQL так що не потрібно просто так щось говорити, а якщо не можите допомогти, то краще не писата, вот моя порада... А то щось дуже багато розумників появилося з яких толку 0. Моя ORM? Ви хоть знаєте що таке Doctrine ORM?
Якби я будував запит до бд, то тоді розумію що я наплужив, але ж будує запит дотрина, і чого синтаксична помилка незрозуміло...

6

Re: Doctrine ORM SQLSTATE[42000]

o_0ps, боюсь що не лише знаю, але й використовував ще... ви вгадали, за царя Гороха як земля була пласка. Якщо виділене жирним у повідомленні пана CrazyFreeMan вам нічого не говорить і ви не бачите в цьому біди - я б не був так певен що ви "чудово розбираєтесь в SQL".
Але про всяк випадок дам підказку... у SQL справді зустрічається слово ORDER. Можливо, ви просто з ним не стикались... втім, не уявляю як.

Подякували: o_0ps1

7 Востаннє редагувалося o_0ps (21.06.2015 21:52:02)

Re: Doctrine ORM SQLSTATE[42000]

Lordie написав:

o_0ps, боюсь що не лише знаю, але й використовував ще... ви вгадали, за царя Гороха як земля була пласка. Якщо виділене жирним у повідомленні пана CrazyFreeMan вам нічого не говорить і ви не бачите в цьому біди - я б не був так певен що ви "чудово розбираєтесь в SQL".
Але про всяк випадок дам підказку... у SQL справді зустрічається слово ORDER. Можливо, ви просто з ним не стикались... втім, не уявляю як.

Тобто order зарезервоване імя?
( Я знаю що таке order (сортування ), просто не думав що не можна створювати таблиці з такою назвою)
P.S Я з цим не зустрічався тому що я тільки навчаюся програмуванню, до того ж сам, і допогти нікому, так і приходиться розбиратися з помилками самому... А досвіду мало, бо вчу PHP близько

8

Re: Doctrine ORM SQLSTATE[42000]

Click.

Подякували: o_0ps1

9

Re: Doctrine ORM SQLSTATE[42000]

Lordie написав:

Click.

Дякую, просто ніколи не зустрічався з зарезервованими назвами таблиць в MySQL

10

Re: Doctrine ORM SQLSTATE[42000]

Блін, найбільш дивно те, що таблицю то воно створило, просто спілкуватися з нею не хотіло, переважно якщо імя зарезервоване, то його навіть при створенні таблиці використати не можна, бо помилка буде, а тут норм... -.-

11

Re: Doctrine ORM SQLSTATE[42000]

Дякую ще раз.
Тема закрита.

12

Re: Doctrine ORM SQLSTATE[42000]

o_0ps написав:
Lordie написав:

o_0ps, це лише свідчить що і ви, і ваша ORM анічогісінько не шарять у зарезервованих словах SQL. І це сумно.

А цей ваш пост що свідчить? Я чудово розбираюся в SQL так що не потрібно просто так щось говорити, а якщо не можите допомогти, то краще не писата, вот моя порада... А то щось дуже багато розумників появилося з яких толку 0. Моя ORM? Ви хоть знаєте що таке Doctrine ORM?
Якби я будував запит до бд, то тоді розумію що я наплужив, але ж будує запит дотрина, і чого синтаксична помилка незрозуміло...

Якщо ви так чудово "розбираєтесь в sql" то от самі і розбирайтесь!
І непотрібно тут ображати інших користувачів!

Подякували: Djalin1

13

Re: Doctrine ORM SQLSTATE[42000]

Lordie написав:

o_0ps, боюсь що не лише знаю, але й використовував ще... ви вгадали, за царя Гороха як земля була пласка. Якщо виділене жирним у повідомленні пана CrazyFreeMan вам нічого не говорить і ви не бачите в цьому біди - я б не був так певен що ви "чудово розбираєтесь в SQL".
Але про всяк випадок дам підказку... у SQL справді зустрічається слово ORDER. Можливо, ви просто з ним не стикались... втім, не уявляю як.

Доречі, вибачайте що наїхав, просто сесія, завтра екзамен, а ще з сайтом робота затягується, вот і зірвався)

14 Востаннє редагувалося o_0ps (21.06.2015 22:02:48)

Re: Doctrine ORM SQLSTATE[42000]

DictatoR написав:
o_0ps написав:
Lordie написав:

o_0ps, це лише свідчить що і ви, і ваша ORM анічогісінько не шарять у зарезервованих словах SQL. І це сумно.

А цей ваш пост що свідчить? Я чудово розбираюся в SQL так що не потрібно просто так щось говорити, а якщо не можите допомогти, то краще не писата, вот моя порада... А то щось дуже багато розумників появилося з яких толку 0. Моя ORM? Ви хоть знаєте що таке Doctrine ORM?
Якби я будував запит до бд, то тоді розумію що я наплужив, але ж будує запит дотрина, і чого синтаксична помилка незрозуміло...

Якщо ви так чудово "розбираєтесь в sql" то от самі і розбирайтесь!
І непотрібно тут ображати інших користувачів!

А ви як завжди дуже корисні, що в попередній темі http://replace.org.ua/topic/4980/, що в цій...
P.S. Зайшли, придерлися до слова і офф. Стабільність тоже хороша риса  :)

15

Re: Doctrine ORM SQLSTATE[42000]

o_0ps, не переходьте на особистості, особливо якщо самі вже зазначили що тема закрита.

16

Re: Doctrine ORM SQLSTATE[42000]

Lordie написав:

o_0ps, не переходьте на особистості, особливо якщо самі вже зазначили що тема закрита.

Все, тема закрита, просто цікава людина Dictator  :)

17

Re: Doctrine ORM SQLSTATE[42000]

o_0ps написав:
DictatoR написав:
o_0ps написав:

А цей ваш пост що свідчить? Я чудово розбираюся в SQL так що не потрібно просто так щось говорити, а якщо не можите допомогти, то краще не писата, вот моя порада... А то щось дуже багато розумників появилося з яких толку 0. Моя ORM? Ви хоть знаєте що таке Doctrine ORM?
Якби я будував запит до бд, то тоді розумію що я наплужив, але ж будує запит дотрина, і чого синтаксична помилка незрозуміло...

Якщо ви так чудово "розбираєтесь в sql" то от самі і розбирайтесь!
І непотрібно тут ображати інших користувачів!

А ви як завжди дуже корисні, що в попередній темі http://replace.org.ua/topic/4980/, що в цій...
P.S. Зайшли, придерлися до слова і офф. Стабільність тоже хороша риса  :)

Вибачаюсь що незважаючи на закриту тему всеодно пишу, просто в o_0ps слабо розвинуте логічне мислення,  бо в тій темі я дав відповідь і навіть привів приклад як її вирішити!
P. S. Якась дивна надмірна агресивність, певно перехідний вік) нічо, все мине!  :D

18

Re: Doctrine ORM SQLSTATE[42000]

DictatoR написав:
o_0ps написав:
DictatoR написав:

Якщо ви так чудово "розбираєтесь в sql" то от самі і розбирайтесь!
І непотрібно тут ображати інших користувачів!

А ви як завжди дуже корисні, що в попередній темі http://replace.org.ua/topic/4980/, що в цій...
P.S. Зайшли, придерлися до слова і офф. Стабільність тоже хороша риса  :)

Вибачаюсь що незважаючи на закриту тему всеодно пишу, просто в o_0ps слабо розвинуте логічне мислення,  бо в тій темі я дав відповідь і навіть привів приклад як її вирішити!
P. S. Якась дивна надмірна агресивність, певно перехідний вік) нічо, все мине!  :D

Це по вашому вирішення проблеми з загрузкою файлів надмірного розміру

error_reporting(0);

?
Краще почитайте додаткову літературу...

19

Re: Doctrine ORM SQLSTATE[42000]

ні ви тоді питали як зробити щоб помилки не вилазили - це варіант рішення, який не усуває проблему але гасить самі помилки

Подякували: DictatoR1

20

Re: Doctrine ORM SQLSTATE[42000]

Так панове, це уже якась традиція цього форуму, що тема починається одним а закінчується іншим  *PARDON*
Через те що o_0ps неправильно формулює думку, там не було зрозуміло що саме він хотів дізнатись, спочатку він сказав що якась помилка непонятна, я пояснив що то таке, потім порадив вихід з його положення, а потім він сказав що не проблема в тій помилці, просто воно йому візуально заважає, так я й порадив йому

error_reporting(0);

Просто пиши тоді помилки і попередження в лог тай все!

Подякували: Djalin1