php insert into не работает
Не работает добавление данных (INSERT INTO) в таблицу
Начал изучать PHP, с книги Head First PHP & MySQL, дошел до раздела в котором нужно добавить данные из заполненной формы в базу данных.
Выполнил все сначала, так сказать, своими словами, не работает. Дальше скачал готовые файлы с сайта книги, попытался найти где я ошибся, не нашел. Плюнул, заменил содержимое своих файлов содержимым из файлов книги, тоже не работает.
Высвечивается ошибка Error querying database. Запрос на создание таблицы сначала делал сам, потом удалил, на всякий случай, и сделал запрос из файла книги:
Предполагаю, что не всю информацию предоставил, спрашивайте, что нужно предоставлю. Прошу помочь, кто чем может? Если пошлете в Google, то хоть намекните состав запроса, область поиска.
1 ответ 1
В этом коде две принципиальные ошибки.
Поскольку в mysqli работа с плейсхолдерами сложна до такой степени, что новички в принципе неспособны освоить её самостоятельно, то вместо mysqli надо надо сразу учить PDO.
Чтобы ошибки mysql отображались, надо перед соединением с БД написать строчку
а все чудовищные «or die()» из кода надо наоборот удалить подчистую и не писать больше никогда.
Если после этого запустить код, то ошибка будет выведена на экран или туда, куда обычно выводятся все ошибки. Её надо будет прочесть и исправить.
Но повторюсь, вместо mysqli надо в обязательном порядке использовать PDO. Это все равно придется делать в будущем, поэтому чем раньше, тем лучше. Вот хорошее руководство.
mysql — PHP PDO — INSERT INTO с bindParam не работает
Я застрял в этом маленьком куске кода:
Я уже использовал PDO для ВЫБОРА вещей из моей базы данных, но с INSERTING что-то не работает. У пользователя есть доступ только к INSERT — я уже пробовал это на моем бэкэнде.
Это мой класс fruit_object:
Моя база данных работает на сервере MySQL — это причина? Должен ли я работать с вопросительными знаками (?)?
Решение
PHP PDO — INSERT INTO с bindParam не работает
Если вы вставляете идентификатор в поле автоинкремента и уже вставили его, это вызовет ошибку MySQL (дублирует значение поля A_I) — Martin
Да, я знаю это, я использую ключевое слово DEFAULT в своем реальном заявлении. — louis12356
объяснить; ключевое слово по умолчанию для чего? Мартин
Существует ключевое слово SQL «ПО УМОЛЧАНИЮ», которое автоматически подсчитывает идентификатор. — louis12356
Вам следует не предоставлять значение для вашего автоинкремента ( id ) столбец. Как это выглядит, что вы даете MySQL Инструкция с помощью Переменная PDO который будет Никогда не работай. Это потому, что PDO использует Подготовленные заявления и поэтому переменные только когда-либо будут переменными и никогда не могут быть инструкции.
Default Ключевое слово в MySQL является инструкцией для программы MySQL. Эта инструкция будет игнорироваться не только потому, что она запрещена, но и потому, что вы передаете STRING значение для вставки PDO, которая утверждает, что это должно быть INT :
Значения автоинкремента просто не нужно вставлять, игнорируйте их:
Пример того, что вы пытаетесь запустить:
Но из-за ограничений безопасности PDO (игнорируя String / Int проблема типа данных) что на самом деле выполняется:
Итак, вы пытаетесь вставить строковую переменную «Default» в целочисленный столбец в MySQL
Что вам нужно сделать, это либо:
Это выведет ваше значение в скрипт.
Другие решения
Вам не хватает закрывающей скобки для подготовки и точки с запятой
если не работает, добавьте эту строку, чтобы проверить ошибку
Если вы используете (?) Будет следующий код
INSERT INTO в таблицу
Не как не могу добавить запись в таблицу
Таблицу создаю в phpmyadmin
Помощь в написании контрольных, курсовых и дипломных работ здесь.
INSERT INTO не всавляет в таблицу.
Форма: 29
Простите за занудность
на странице отображается Resource id #5, т.е. как я понял запрос проходит(выполняется)
на странице не отображается НИЧЕГО
Добавлено через 2 минуты
.
Добавлено через 2 минуты
Опять ошибся в имени таблице, не users, а tabl
Добавлено через 29 секунд
Опять ошибся в имени таблице, не users, а tabl
С помощью phpadmin создал БД название 1410, в ней 2 таблицы oshibka(id, date, col) и users(id, login, password, avatar)
Запрос в файле sava_user.php в самом низу
Добавлено через 5 минут
Забыл style.css
Добавлено через 6 минут
Сделал в phpadmin запрос
Помощь в написании контрольных, курсовых и дипломных работ здесь.
INSERT INTO не заносятся данные в таблицу базы данных
Помогите пожалуста разобратся. Почему у меня не заносятся данные в таблицу БД mySQL В Файле.
Insert в таблицу
Добрый день, пытаюсь следующим запросом выполнить insert в таблицу1, при этом выбрав из таблицы2 id.
Insert into в таблицу с последовательностью
Здравствуйте, У меня есть таблица в ms sql server lecturer (id, surname, name, city) там же.
Форум PHP программистов ► PHP практикум ► PHP + SQL
Новичок
Профиль
Группа: Пользователь
Сообщений: 48
Пользователь №: 17038
На форуме:
Карма:
Вроде всё правильно написал
Сначала сделай запрос так, чтобы он был в одной переменной, а потом выведи эту переменную через echo.
И тогда уж посмотрим, что у тебя в запросе «не так». Скорее всего, спецсимволы какие-нибудь, которые надо экранировать.
PS. Да и что значит «не работает «? Ошибка какая-то выходит, или просто не заносятся данные?
my sql _error() говорит:
Цитата |
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 ‘font-size:small;’>text Крупный текст: |
подобный вопрос, как надо экранировать?
ошибку выдаёт такую:
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 ‘C:\WINDOWS’, ‘C:\WINDOWS\system32\cmd.exe’, ‘.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.’ at line 1
Как выполнить запрос «INSERT IF NOT EXIST» в MySQL?
У меня есть таблица с 14 миллионами записей. Если я хочу добавить больше данных в том же формате, есть ли способ гарантировать, что запись, которую я хочу вставить, еще не существует, без использования пары запросов (т. е. один запрос для проверки и один – для вставки)?
Гарантирует ли ограничение unique поля при выполнении insert отказ выполнения, если оно уже существует?
Ответ 1
В последней версии MySQL синтаксис, представленный в вопросе, невозможен. Но есть несколько очень простых способов добиться того, что ожидается, используя существующие функции.
Есть 3 возможных решения: использовать INSERT IGNORE, REPLACE или INSERT… ON DUPLICATE KEY UPDATE.
Итак, у нас есть таблица:
CREATE TABLE `transcripts` (
`ensembl_transcript_id` varchar(20) NOT NULL,
`transcript_chrom_start` int(10) unsigned NOT NULL,
`transcript_chrom_end` int(10) unsigned NOT NULL,
PRIMARY KEY (`ensembl_transcript_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Теперь представьте, что у нас есть автоматический конвейер, импортирующий метаданные транскриптов из Ensembl, и что по разным причинам конвейер может сломаться на любом этапе выполнения. Таким образом, нам нужно обеспечить две вещи:
повторные запуски конвейера не уничтожат нашу базу данных ;
повторное выполнение не прекратится из-за ошибок «дублирования первичного ключа».
Метод 1: использование REPLACE
REPLACE INTO `transcripts`
SET `ensembl_transcript_id` = ‘ENSORGT00000000001’,
Если запись существует, она будет перезаписана; если ее еще нет, она будет создана. Однако в нашем случае использование этого метода неэффективно: нам не нужно перезаписывать существующие записи, их можно просто пропустить.
Метод 2: использование INSERT IGNORE:
INSERT IGNORE INTO `transcripts`
SET `ensembl_transcript_id` = ‘ENSORGT00000000001’,
Этот второй метод имеет несколько потенциальных недостатков, включая невозможность прерывания запроса в случае возникновения какой-либо другой проблемы. Таким образом, его следует использовать, если ранее не было ключевого слова IGNORE.
Метод 3: использование INSERT… ON DUPLICATE KEY UPDATE:
Ответ 2
Решение:
INSERT INTO `table` (`value1`, `value2`)
SELECT ‘stuff for value1’, ‘stuff for value2’ FROM DUAL
WHERE NOT EXISTS (SELECT * FROM `table`
WHERE `value1`=’stuff for value1′ AND `value2`=’stuff for value2′ LIMIT 1)
Объяснение:
SELECT * FROM `table`
WHERE `value1`=’stuff for value1′ AND `value2`=’stuff for value2′ LIMIT 1
SELECT ‘stuff for value1’, ‘stuff for value2’ FROM DUAL
INSERT INTO `table` (`value1`, `value2`)
вставляет данные, если они были возвращены промежуточным запросом.
Ответ 3
Вот функция PHP, которая вставит строку, только если все указанные значения столбцов еще не существуют в таблице.
Если один из столбцов отличается, строка будет добавлена.
Если таблица пуста, строка будет добавлена.
Если существует строка, в которой все указанные столбцы имеют указанные значения, строка не будет добавлена.
- php insert into mysql пример
- php insert php code