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
Форумы портала PHP.SU :: Версия для печати :: передача данных из формы в БД...
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » передача данных из формы в БД...

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

1. AlinJones - 25 Октября, 2018 - 20:24:50 - перейти к сообщению
Всем привет. Новичок в 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. ?>
2. LIME - 25 Октября, 2018 - 21:17:02 - перейти к сообщению
в бд не пишутся переменные
представь что это таблица, оно так и называется "таблица users"
надо сначала добавить новый столбец чтоб в него писать
ALTER TABLE ADD COLUMN
https://dev[dot]mysql[dot]com/doc/refman[dot][dot][dot]alter-table[dot]html
3. AlinJones - 26 Октября, 2018 - 04:59:33 - перейти к сообщению
LIME пишет:
в бд не пишутся переменные
представь что это таблица, оно так и называется "таблица users"
надо сначала добавить новый столбец чтоб в него писать
ALTER TABLE ADD COLUMN
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html




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

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

Удаляю четвертую запись из формы html, из кода и три записи опять нормально прописываются в таблицу.
4. Мелкий - 26 Октября, 2018 - 10:55:30 - перейти к сообщению
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, внимание на кавычки. Они решительно важны.
5. LIME - 26 Октября, 2018 - 19:42:40 - перейти к сообщению
Добавлю только что надо обратить внимание и на вид кавычки.
Это не одинарная кавычках. Это апостроф должен быть. Это экранирование служебных слов. В данном случае можно вообще без кавычек.
(Добавление)
И для общего развития устаревшая немножко, но полезная статья: http://phpfaq[dot]ru/debug
6. AlinJones - 28 Октября, 2018 - 00:25:25 - перейти к сообщению
Спасибо всем за помощь.

 

Powered by ExBB FM 1.0 RC1