Есть ли проблема с этим MySQL Query? - PullRequest
0 голосов
/ 10 мая 2010
public function create() {


        echo $this->equipment->getCatId() . "<br/>";
        echo $this->equipment->getName() . "<br/>";
        echo $this->equipment->getYear() . "<br/>";
        echo $this->equipment->getManufacturer() . "<br/>";
        echo $this->equipment->getModel() . "<br/>";
        echo $this->equipment->getPrice() . "<br/>";
        echo $this->equipment->getLocation() . "<br/>";
        echo $this->equipment->getCondition() . "<br/>";
        echo $this->equipment->getStockNum() . "<br/>";
        echo $this->equipment->getInformation() . "<br/>";
        echo $this->equipment->getDescription() . "<br/><br/>";


        $db = Connect::connect();
        $current_time = date('y M d');
        $query = "INSERT INTO equipment (cat_id, name, year, manufacturer, model, price, location, condition,
                                         stock_num, information, description, created, modified)

                                         VALUES

                                        ({$this->equipment->getCatId()}, {$this->equipment->getName()}, {$this->equipment->getYear()},
                                         {$this->equipment->getManufacturer()}, {$this->equipment->getModel()}, {$this->equipment->getPrice()},
                                         {$this->equipment->getLocation()}, {$this->equipment->getCondition()}, {$this->equipment->getStockNum()},
                                         {$this->equipment->getInformation()}, {$this->equipment->getDescription()}, '$current_time', '$current_time')";

        $result = $db->query($query);

        return $db->insert_id;

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

Есть идеи?

Заранее спасибо!

Вот повторяющийся запрос

INSERT INTO оборудование (cat_id, имя, год, производитель, модель, цена, местоположение, состояние, stock_num, информация, описание, создано, изменено). , «2», «d», «d», «3», «asdfasdfdf», «df», «10 мая», «10 мая»)

MySQL дает: # 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'условие, stock_num, информация, описание, создано, изменено) ЗНАЧЕНИЯ (1,' r 'в строке 1

id int (11) без знака NO PRI NULL auto_increment Редактировать Удалить cat_id int (11) без знака NO NULL
Редактировать Удалить prod_name varchar (255) ДА NULL
Редактировать Удалить prod_year varchar (10) ДА НУЛЬ
Редактировать Удалить производитель varchar (255) YES NULL
Редактировать Удалить модель varchar (255) ДА НУЛЬ
Редактировать Удалить цену varchar (10) ДА НУЛЬ
Редактировать Удалить местоположение varchar (255) YES NULL
Редактировать Удалить условие varchar (25) ДА НУЛЬ
Редактировать Удалить stock_num varchar (128) ДА НУЛЬ
Редактировать Удалить информационный текст YES NULL
Редактировать Удалить текст описания YES NULL
Редактировать Удалить созданный varchar (20) ДА NULL
Редактировать Удалить измененный varchar (20) ДА NULL

Запрос: INSERT INTO оборудование (cat_id, prod_name, prod_year, производитель, модель, цена, местоположение, состояние, stock_num, информация, описание, создано, изменено). , «asdf», «34», «asdf», «asdf», «234», «asdf», «asdf», «10 мая», «10 мая»)

Вот экспорт SQL из PhpMyAdmin на случай, если кто-то захочет попробовать продублировать эту проблему: http://pastie.org/954206

BLEHBLEHSDFOHSE - По-видимому, «условие» также является зарезервированным словом ... добавило несколько обратных символов, затем оно начало работать.

Ответы [ 6 ]

1 голос
/ 10 мая 2010

YEAR - зарезервированное слово в MySQL. Если вы собираетесь его использовать, вам понадобится обратный удар (т.е. `year`)

0 голосов
/ 10 мая 2010

Прекратите использовать mysql_query () и переключитесь на mysqli и подготовленные операторы , тогда вам не нужны все эти тупые ООП в строке SQL. Это будет выглядеть чище, как это:

$query = 'INSERT INTO table (id,name,age) VALUES (?,?,?)';
0 голосов
/ 10 мая 2010

BLEHBLEHSDFOHSE - По-видимому, «условие» также является зарезервированным словом ... добавило несколько обратных символов, затем оно начало работать.

0 голосов
/ 10 мая 2010

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

INSERT INTO оборудование (cat_id, имя, год выпуска, производитель, модель, цена, местоположение, состояние, stock_num, информация, описание, созданные, изменено) ЗНАЧЕНИЯ (1, 'r', 1 , 'sdf', 'sdf', '2', 'd', 'd', '3', 'asdfasdfdf', 'df', '10 10 мая ', '10 10 мая ')

здесь проблема в cat_id с кавычками

Запрос: INSERT INTO оборудование (cat_id, название, год, производитель, модель, цена, местоположение, состояние, stock_num, информация, описание, созданные, изменено) ЗНАЧЕНИЯ ( '1' , 'asdf', '234', «adf», «asdf», «34», «asdf», «asdf», «234», «asdf», «asdf», «10 мая», '10 10 мая ')

0 голосов
/ 10 мая 2010

Varchar, char и текстовые поля нуждаются в кавычках вокруг них, чтобы вставить. Отобразите запрос SQL и проверьте, что это происходит.

0 голосов
/ 10 мая 2010

При условии, что местоположение, информация и описание являются строками, кавычки отсутствуют.

INSERT INTO equipment (cat_id, name, year, manufacturer, model, price, location, condition,
                                         stock_num, information, description, created, modified)

                                         VALUES

                                        ({$this->equipment->getCatId()}, {$this->equipment->getName()}, {$this->equipment->getYear()},
                                         '{$this->equipment->getManufacturer()}', {$this->equipment->getModel()}, {$this->equipment->getPrice()},
                                         '{$this->equipment->getLocation()}', {$this->equipment->getCondition()}, {$this->equipment->getStockNum()},
                                         '{$this->equipment->getInformation()}', '{$this->equipment->getDescription()}', '$current_time', '$current_time')";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...