Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: передача данных из формы в БД...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не получается передать больше трех переменных(строк) в бд.
AlinJones
Отправлено: 25 Октября, 2018 - 20:24:50
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




Всем привет. Новичок в PHP, изучаю самостоятельно, но столкнулся со следующей проблемой. Пока еще не нашел ответа Хорошо

Например есть форма с тремя переменными Имя, фамилия, возраст. Все отлично записывается в БД.

Но как только добавляю четвертую переменную, запись не проходит.
Код ниже.

Возник вопрос, есть ли какое то ограничение по количеству передаваемых переменных из форму в БД ?

Спасибо, каждому кто подскажет, или укажет направление.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if(isset($_POST['insert']))
  5. {
  6.     try {
  7.  
  8.        
  9.  
  10.         $pdoConnect = new PDO("mysql:host=localhost;dbname=test","root","");
  11.     } catch (PDOException $exc) {
  12.         echo $exc->getMessage();
  13.         exit();
  14.     }
  15.  
  16.    
  17.     $fname = $_POST['fname'];
  18.     $lname = $_POST['lname'];
  19.     $age = $_POST['age'];
  20.     $dname = $_POST['mphone'];
  21.        
  22.    
  23.    
  24.  
  25.     $pdoQuery = "INSERT INTO `users`(`fname`, `lname`, `age`, mphone') VALUES (:fname,:lname,:age,:mphone)";
  26.    
  27.     $pdoResult = $pdoConnect->prepare($pdoQuery);
  28.    
  29.     $pdoExec = $pdoResult->execute(array(":fname"=>$fname,":lname"=>$lname,":age"=>$age, ":mphone"=>$mphone));
  30.    
  31.        
  32.     if($pdoExec)
  33.     {
  34.         echo 'Данные записаны';
  35.     }else{
  36.         echo 'Данные не записаны';
  37.     }
  38. }
  39.  
  40.  
  41. ?>

(Отредактировано автором: 25 Октября, 2018 - 21:13:16)

 
 Top
LIME
Отправлено: 25 Октября, 2018 - 21:17:02
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




в бд не пишутся переменные
представь что это таблица, оно так и называется "таблица users"
надо сначала добавить новый столбец чтоб в него писать
ALTER TABLE ADD COLUMN
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html

(Отредактировано автором: 25 Октября, 2018 - 21:18:42)

 
 Top
AlinJones
Отправлено: 26 Октября, 2018 - 04:59:33
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




LIME пишет:
в бд не пишутся переменные
представь что это таблица, оно так и называется "таблица users"
надо сначала добавить новый столбец чтоб в него писать
ALTER TABLE ADD COLUMN
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html




Спасибо.
Ок, не переменные, а запись данных в таблицу бд из формы.
Бд и таблицу я создавал через phpmyadmin.
А в таблице, когда понадобилось больше трех столбцов добавил четвертый. Но тут то и происходит загвоздка.

Три записи проходит в таблицу, а как добавляю еще одну, то ошибки нет, но проверка выдает что не записано в таблицу ничего.

Удаляю четвертую запись из формы html, из кода и три записи опять нормально прописываются в таблицу.
 
 Top
Мелкий Супермодератор
Отправлено: 26 Октября, 2018 - 10:55:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




AlinJones пишет:
то ошибки нет

Вы её не видите, но она есть. Переставьте PDO::ATTR_ERRMODE в PDO::ERRMODE_EXCEPTION, И, в общем-то, всегда его так выставляйте.

PHP:
скопировать код в буфер обмена
  1. $pdoConnect = new PDO("mysql:host=localhost;dbname=test","root","", [
  2.     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  3. ]);


AlinJones пишет:
INSERT INTO `users`(`fname`, `lname`, `age`, mphone')

Syntax error, внимание на кавычки. Они решительно важны.


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 26 Октября, 2018 - 19:42:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Добавлю только что надо обратить внимание и на вид кавычки.
Это не одинарная кавычках. Это апостроф должен быть. Это экранирование служебных слов. В данном случае можно вообще без кавычек.
(Добавление)
И для общего развития устаревшая немножко, но полезная статья: http://phpfaq[dot]ru/debug
 
 Top
AlinJones
Отправлено: 28 Октября, 2018 - 00:25:25
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




Спасибо всем за помощь.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB