Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2

Не добавляются записи в таблицу

17.02.2010, 18:16. Показов 1505. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять почему скрипт регистрации не добавляет записи в мускул!Ошибок не пишет!Я думаю, что в моем корявом коде, косяк кроется в SELECT...Подскажите, кто знает...Так же буду рад вашим поправкам в остальном кодеВот собственно и весь код, что есть на данный момент.Капчу добавлю после того, как разберусь с этим косяком
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
$host="localhost";
$my_login="root";
$my_password="12345";
$db="av-reg";
if (!isset ($_POST['login'], $_POST['pass'], $_POST['passw'], $_POST['nik'], $_POST['email'])==TRUE){
if (preg_match("/^[a-zA-Z0-9]{4,15}$/",$_POST['login'])==TRUE){
$log=$_POST['login'];
mysql_connect($host, $my_login, $my_password);
mysql_select_db($db);
$q=mysql_query("SELECT * FROM users WHERE login=\"$log\"");
$res=mysql_fetch_assoc($q);
if ($res["login"]!=$log){
$login=$log;
}
else{
$error_l="Введенный логин не соответствует требованиям!<br>";
}
}
else{
$error_l="Введенный логин не соответствует требованиям!<br>";
}
if (($_POST['pass']===$_POST['passw']) and preg_match ("/^[a-zA-Z0-9]{6,20}$/",$_POST['pass'])==TRUE){
$abra="r;'ga@!#";
$password=md5 (md5 ($pass.$abra));
}
else{
$error_p="Введенный пароль не соответствует требованиям!<br>";
}
if (preg_match("/^[a-zA-Z0-9]{4,15}$/",$_POST['nik'])==TRUE){
$nick=$_POST['nik'];
$q=mysql_query("SELECT * FROM users WHERE nik=\"$nick\"");
$res=mysql_fetch_assoc($q);
if ($res["nik"]!=$nick){
$nik=$nick;
}
else{
$error_n="Введенный ник не соответствует требованиям!<br>";
}
}
else{
$error_n="Введенный ник не соответствует требованиям!<br>";
}
if (preg_match ("/(?:^[a-zA-Z0-9_\.-]+@[a-z]+\.[a-z]+){10,40}$/", $_POST['email'])==TRUE){
$mail=$_POST['email'];
$q=mysql_query("SELECT * FROM users WHERE email=\"$mail\"");
$res=mtsql_fetch_assoc($q);
if ($res["email"]!=$mail){
$email=$mail;
}
else{
$error_e="Введенный E-mail не соответствует требованиям!<br>";
}
}
else{
$error_e="Введенный E-mail не соответствует требованиям!<br>";
}
if (!isset ($login, $password, $nik, $email)==TRUE){
$data=date(d)."-".date(m)."-".date(Y)." ".date(H).":".date(i).":".date(s);
$q=mysql_query("INSERT INTO users VALUES (NULL, '$login', '$password', '$nik', '$email', '$data');");
mysql_close();
$_POST['ok']="Спасибо за регистрацию!";
Header("Location:registraciya.php");
exit;
}
}
else{
$_POST['error_l']=$error_l;
$_POST['error_p']=$error_p;
$_POST['error_n']=$error_n;
$_POST['error_e']=$error_e;
Header("Location:registraciya.php");
exit;
}
?>
Только не смейтесь с кода
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2010, 18:16
Ответы с готовыми решениями:

В таблицу MySql не добавляются записи
Доброго времени суток. Та же проблема что и в теме https://www.cyberforum.ru/php-database/thread270327.html, не добавляются данные в...

В таблицу MySql не добавляются записи.
Не прошло и 2 дней, как я вернулся с новым вопросом) Написал запрос на добавление записи в таблицу, вроде бы всё как надо, но после...

Не добавляются записи в таблицу SQlite3
Доброго времени суток! Пытаюсь освоить php, написал класс который создает db и таблицу sqlite3, принимает из формы данные и заносит их в...

11
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
17.02.2010, 18:32
PHP
1
$q=mysql_query("INSERT INTO users VALUES (NULL, '$login', '$password', '$nik', '$email', '$data');");
во-1х, чет мне кажется, или я прав, но обычно NULL не добавляют в таблицы
во-2х, вставь перечисления полей, т.е.
T-SQL
1
INSERT INTO MyTable (a,b,c) VALUES (1,2,3)
и еще мож слово users взять в квадратные скобки, или чо там в мускуле ? апострофы? потому как похоже на зарезервированное слово
1
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
17.02.2010, 18:46  [ТС]
щас попробую

Добавлено через 12 минут
Цитата Сообщение от CyberБурундукЪ Посмотреть сообщение
и еще мож слово users взять в квадратные скобки, или чо там в мускуле ? апострофы? потому как похоже на зарезервированное слово
я просто до этого писал скрипт реги, там работала такая конструкция, но то был денвер...а щас чистый LAMP+PMA
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
17.02.2010, 19:08
Проверка ошибок:
PHP
1
... mysql_query('...') or die(mysql_error());
Используй mysql_real_escape_string() для строковых значений.
PHP
1
"SELECT * FROM users WHERE login = '".mysql_real_escape_string($_POST['login'])."'"
1
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
17.02.2010, 19:16  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Проверка ошибок:
это я знаю, просто оно будет возвращать FALSE, если такой записи нету, а мне нужно на оборот)))

Добавлено через 34 секунды
а за
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Используй mysql_real_escape_string() для строковых значений
отдельное спасибо
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
17.02.2010, 19:26
А что там на 47 строке? Какой-то mtsql_fetch_assoc... возможно, он на нём спотыкается. Что бы он показал все ошибки, то надо либо настроить php.ini, либо в начале скрипта выполнить
PHP
1
error_reporting(E_ALL);
Маленький совет по поводу INSERT... я рекомендую указывать так
PHP
1
"INSERT INTO tab SET login='$login',pass='$password',nik='$nick'";
и т.д. Это позволит не запутаться в столбцах и можно будет изменять структуру таблицы без особых проблем со скриптом. И не надо будет указывать NULL для столбца с AUTO_INCREMENT'ом.
1
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
17.02.2010, 22:17  [ТС]
Humanoid, ну я не знаю что сказать...ты самый настоящий гуру в PHP и MySQL!!!Спасибо!

Добавлено через 2 часа 42 минуты
теперь ошибок никаких не пишет, даже с
PHP
1
error_reporting(E_ALL);
но и перенаправление не работает!жесть...я третий день с ним вожусь
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
17.02.2010, 22:22
Цитата Сообщение от romchiksoad Посмотреть сообщение
но и перенаправление не работает!
Попробуй после двоеточия пробел ставить:
Code
1
Location: registraciya.php
Не знаю, как в стандарте описано, но сервера всегда ставят пробел.
Перенаправление просто молча не работает? Или жалуется на что-то?
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
17.02.2010, 23:26  [ТС]
если б жаловалось, я бы не так переживално уже все норм, перенаправляет, но не записывает(((

Добавлено через 22 минуты
Сейчас мой скрипт выглядит так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
$host="localhost";
$my_login="root";
$my_password="12345";
$db="avreg";
if (!isset ($_POST['login'], $_POST['pass'], $_POST['passw'], $_POST['nik'], $_POST['email'])==TRUE){
if (preg_match("/^[a-zA-Z0-9]{4,15}$/",$_POST['login'])==TRUE){
mysql_connect($host, $my_login, $my_password);
mysql_select_db($db);
$q=mysql_query("SELECT * FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."'");
@$res=mysql_fetch_assoc($q);
if ($res["login"]!=$_POST['login']){
$login=$_POST['login'];
}
else{
$error_l="Введенный логин не соответствует требованиям!<br>";
}
}
else{
$error_l="Введенный логин не соответствует требованиям!<br>";
}
if (($_POST['pass']===$_POST['passw']) and preg_match ("/^[a-zA-Z0-9]{6,20}$/",$_POST['pass'])==TRUE){
$abra="r;'ga@!#";
$pass=$_POST['pass'];
$password=md5(md5($pass.$abra).$abra);
}
else{
$error_p="Введенный пароль не соответствует требованиям!<br>";
}
if (preg_match("/^[a-zA-Z0-9]{4,15}$/",$_POST['nik'])==TRUE){
$q=mysql_query("SELECT * FROM users WHERE nik='".mysql_real_escape_string($_POST['nik'])."'");
@$res=mysql_fetch_assoc($q);
if ($res["nik"]!=$_POST['nik']){
$nik=$_POST['nik'];
}
else{
$error_n="Введенный ник не соответствует требованиям!<br>";
}
}
else{
$error_n="Введенный ник не соответствует требованиям!<br>";
}
if (preg_match ("/(?:^[a-zA-Z0-9_\.-]+@[a-z]+\.[a-z]+){10,40}$/", $_POST['email'])==TRUE){
$q=mysql_query("SELECT * FROM users WHERE email='".mysql_real_escape_string($_POST['email'])."'");
$res=mysql_fetch_assoc($q);
if ($res["email"]!=$_POST['email']){
$email=$_POST['email'];
}
else{
$error_e="Введенный E-mail не соответствует требованиям!<br>";
}
}
else{
$error_e="Введенный E-mail не соответствует требованиям!<br>";
}
if (!isset ($login, $password, $nik, $email)==TRUE){
$q=mysql_query("INSERT INTO users SET login='$login',pass='$password',nik='$nik', email='$email'");
mysql_close();
$_POST['ok']="Спасибо за регистрацию!";
}
}
else{
$_POST['error_l']=$error_l;
$_POST['error_p']=$error_p;
$_POST['error_n']=$error_n;
$_POST['error_e']=$error_e;
}
header("Location:registraciya.php");
exit;
?>
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
18.02.2010, 13:13
12-ю строку лучше изменить на
PHP
1
if ((!$res) && ($res["login"]!=$_POST['login'])){
или на
PHP
1
if ((!isset($res["login"])) && ($res["login"]!=$_POST['login'])){
...что бы вначале проверить, было ли найдено такое значение или нет. А то он возвращает пустой массив и элемента 'login' в нём вообще нету.

Если не поможет, то на время закомментируй 57 строку, а вместо неё напиши:
PHP
1
2
echo "INSERT INTO users SET login='$login',pass='$password',nik='$nik', email='$email'";
exit;
И посмотри, какой запрос получается в результате.
1
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
18.02.2010, 14:31  [ТС]
щас попробую

Добавлено через 1 минуту
Дядь, ну ты красавчик))логика на высшем уровне, это скорей всего так,до меня только дошло))я про это
Цитата Сообщение от Humanoid Посмотреть сообщение
12-ю строку лучше изменить на
Код PHP
1
if ((!$res) && ($res["login"]!=$_POST['login'])){
или на
Код PHP
1
if ((!isset($res["login"])) && ($res["login"]!=$_POST['login'])){
...что бы вначале проверить, было ли найдено такое значение или нет. А то он возвращает пустой массив и элемента 'login' в нём вообще нету.
Добавлено через 13 минут
Дружище!!!Спасибо, теперь я хоть понял в чем косяк!Он кроется в РВ для мыла!!щас буду исправлятьЯ только строку:
Цитата Сообщение от Humanoid Посмотреть сообщение
echo "INSERT INTO users SET login='$login',pass='$password',nik='$ni k', email='$email'"; exit;
написал в самы конец и убрал header, что бы увидеть надпись

Добавлено через 32 минуты
EHF!В смысле "УРА!"Заработало!

Добавлено через 47 секунд
косяк всё-таки в РВ с мыло был
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
18.02.2010, 18:59
Цитата Сообщение от romchiksoad Посмотреть сообщение
это я знаю, просто оно будет возвращать FALSE, если такой записи нету, а мне нужно на оборот)))
mysql_query() возвращает false только в случае ошибки. В остальных случаях, в зависимости от запроса, либо true, либо дескриптор результата (пустой результат - тоже результат).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2010, 18:59
Помогаю со студенческими работами здесь

Не добавляются записи в таблицу БД Access
Помогите решить проблему, при отладке не добавляются записи в таблицу, а вот изменять можно Imports System.Windows.Forms Public...

Не добавляются значения в таблицу
сайт http://www.tvpnero.ho.ua/problem/post.html (форма добавления комента внизу возле футера сайта) код формы

Не добавляются данные в таблицу
$AddQuery = &quot;INSERT INTO `IndividalLearnRequest` SET `Surname`='&quot;.$Surname.&quot;' `Name`='&quot;.$Name.&quot;' `Patronymic`='&quot;.$Patronymic.&quot;'...

Не добавляются данные в таблицу
Всем доброго дня. Только начал знакомиться с бд, попробовал добавить данные, но почему-то не получается. Уже час пытаюсь найти ошибку, но...

Не добавляются данные в таблицу
Всем привет, столкнулся с проблемой добавления данных в таблицу. Не хочет добавлять и все, код: string sqlQuery1 = &quot;INSERT INTO...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru