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 :: mysql+php

 PHP.SU

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


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

> Описание: Запись из формы в таблицу
Petro
Отправлено: 18 Октября, 2010 - 16:40:46
Post Id



Гость


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


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




Добрый вечер!
Есть таблица
mysql> show columns from user;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name | char(10) | YES | | NULL | |
| password | char(10) | YES | | NULL | |
+----------+----------+------+-----+---------+-------+
и с помощью формы я хочу ее заполнить, если в поле формы ввожу цифры, то все записывается, но когда ввожу:
Имя:Petro
Пароль:111
Выводит ошибку Unknown column 'Petro' in 'field list'
как это можно исправить?

<form action='registraciya.php' method='POST'>
<input type=text name='name' size='10' value='' maxlength='10'>Введите имя<br>
<input type=text name='pass' size='10' value='' maxlength='10'>Введите пароль<br>
<input type=submit value='Зарегистрировать'>

<?php

$user= isset ($_POST['name']) ? ($_POST['name']) : '';
$pass= isset ($_POST['pass']) ? ($_POST['pass']) : '';
echo 'Имя:', $user, '<br>Пароль:', $pass, '<br>';
$mscon=mysql_connect($mshost, $msuser, $mspass) or die(mysql_error()); //soedinenie s mysql
mysql_query('SET NAMES cp1251');
mysql_select_db('base') or die(mysql_error()); //выбор БД
$sql='insert into user values('.$user.', '.$pass.')';
mysql_query($sql) or die(mysql_error()); //Запись в таблицу
mysql_close($mscon);
?>


-----
Нет ничего более постоянного, чем временное.
 
 Top
Мелкий Супермодератор
Отправлено: 18 Октября, 2010 - 16:54:48
Post Id



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


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


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




Строковые значения запроса необходимо заключать в кавычки:
PHP:
скопировать код в буфер обмена
  1. $sql='insert into user values("'.$user.'", "'.$pass.'")';

(Отредактировано автором: 18 Октября, 2010 - 16:55:01)



-----
PostgreSQL DBA
 
 Top
Petro
Отправлено: 18 Октября, 2010 - 16:59:00
Post Id



Гость


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


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




спасибо заработало )
А если бы тип поля integer то обойтись можно будет только ' ' ?


-----
Нет ничего более постоянного, чем временное.
 
 Top
JustUserR
Отправлено: 18 Октября, 2010 - 17:03:41
Post Id



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


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


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




Petro пишет:
А если бы тип поля integer то обойтись можно будет только ' ' ?
В случае если информационное поле в таблице БД предствлено в виде численного типа - то при указании интерполируемых констант в SQL-запросе необходимо проводить обработку функцией типа intval - и в то же время не производить добавление экранирующих кавычек


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Мелкий Супермодератор
Отправлено: 18 Октября, 2010 - 19:35:42
Post Id



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


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


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




Petro, просто имейте в виду, что PHP - один ЯП, а SQL - уже другой. Но и тот и другой должны однозначно разбирать текст, который и представляет их язык. Так, запрос из php:
PHP:
скопировать код в буфер обмена
  1. $sql='insert into user values("'.$user.'", "'.$pass.'")';

в mysql приходит уже в виде
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO user VALUES("некоторое значение", "некоторое значение")

А если кавычек в SQL нет, то СУБД не сможет понять, где границы текста и вообще путается, что ей пытаются скормить, если это не число.
А вот если это число, то его распознаёт и без кавычек.

В общем, аналогично, как и в php:
PHP:
скопировать код в буфер обмена
  1. $var=600;
  2. $var="600"; //будет лишнее приведение типов, но смысл останется
  3. $var="строка текста";
  4. $var=строка текста; //а что вы от меня хотите? Я вас не понимаю :(

как-то так Закатив глазки


-----
PostgreSQL DBA
 
 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