Не пишутся данные в БД.

Статус
В этой теме нельзя размещать новые ответы.

sidor

Старатель
Регистрация
7 Июн 2006
Сообщения
220
Реакции
14
Прошу не пинать ногами. Только начал изучение php :)

Вообщем есть БД "test".
Я создаю БД через php:
PHP:
<?
$user="root";
$password="root";
$database="test";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or 
die("Unable to select database");
$query="CREATE TABLE 	contacts
(id int(6) NOT NULL auto_increment,
first varchar(15) NOT NULL,
last varchar(15) NOT NULL,
phone varchar(20) NOT NULL,
mobile varchar(20) NOT NULL,
fax varchar(20) NOT NULL,
email varchar(30) NOT NULL,
web varchar(30) NOT NULL,
PRIMARY KEY (id), UNIQUE id (id), KEY id_2 (id))";
mysql_query($query);
mysql_close();
?>

Для добавления новостей использую html-форму
HTML:
<html>
<head>
<title>contacts db</title>
</head>
<body>
<form action="insert.php" method="post">
Фамилия: <input type="text" name="first"><br>
Имя: <input type="text" name="last"></input><br>
Телефон: <input type="text" name="phone"></input><br>
Мобильний телефон: <input type="text" name="mobile"></input><br>
Факс: <input type="text" name="fax"></input><br>
E-mail: <input type="text" name="email"></input><br>
Веб-страница: <input type="text" name="web"></input><br><br>
<input type="submit"></input>
</form>
</body>
</html>

И наконец, тот самый indert.php, который добавляет данные в таблицу:
PHP:
<?
$user="root";
$password="root";
$database="test";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or 
die("Unable to select database");
$query="INSERT INTO contacts VALUES
('','$first','$last','$phone','$mobile','$fax','$email','$web')";
mysql_query($query);
mysql_close();
?>

Итак, в чем проблема. Добавляются все поля с новым id, но они все пустые.
Вот так выглядит это в phpmyadmin (первые две строки сам заполнил:(
Для просмотра ссылки Войди или Зарегистрируйся

Скажите пожалуйста, в чем может быть проблема? А то зашел в тупик.
 
переменые $first, $last и так далее используются регистра глобал он
делай так
PHP:
$first = $_POST['first'];
$last = $_POST['last'];
И еще фильтруй переменые :)
 
переменые $first, $last и так далее используются регистра глобал он
делай так
PHP:
$first = $_POST['first'];
$last = $_POST['last'];
И еще фильтруй переменые :)

ммм.. про register_globals = on/off уже почитал. спасибо.
а что ты имеешь ввиду под "фильтруй переменные"?
 
  • Заблокирован
  • #4
Имеет ввиду что из переменных надо вырезать кавычки и прочие нехорошие символы, чтобы избежать sql-инъекций.
 
всех отблагодарил. проблема решена. прошу модеров закрыть тему.
 
Я может не понимаю чего, но мне неясно, как при таком синтаксисе запроса
PHP:
"INSERT INTO contacts VALUES
('','$first','$last','$phone','$mobile','$fax','$email','$web')";
В бд могут добавиться значения указанных переменных, а не сами строки "$first" и т.п., если используются одинарные кавычки и нет никакой конкатенации.
Запрос должен выглядеть так:
PHP:
"INSERT INTO contacts VALUES
('','".$first."','".$last."','".$phone."','".$mobile."','".$fax."','".$email."','".$web."')";
 
Я может не понимаю чего, но мне неясно, как при таком синтаксисе запроса
PHP код:
"INSERT INTO contacts VALUES
('','$first','$last','$phone','$mobile','$fax','$email','$web')";
В бд могут добавиться значения указанных переменных, а не сами строки "$first" и т.п., если используются одинарные кавычки и нет никакой конкатенации.
Потому что вся строка взята в двойные кавычки и соответственно переменные буду обработаны, учи матчасть (можешь сделать просто echo указанной строки и сам увидишь).
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху