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.SU

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


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

> Описание: Не могу разобраться с Mysql
anton_17
Отправлено: 27 Октября, 2010 - 15:41:09
Post Id


Новичок


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


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




Написал в базе
CREATE TABLE user (
id_user mediumint(9) auto_increment,
email char(50),
passw char(32),
status_user enum('y','n'),
PRIMARY KEY (id_user)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Пишу в php:
if (!isset($err_add)) {
if ($db = @mysql_connect(HOST_CONNECT, LOGIN_CONNECT, PASSW_CONNECT)) {
mysql_select_db(DB_CONNECT);
mysql_query("SET NAMES cp1251");
$q = "SELECT * FROM user WHERE email='$emails'";
$res_add = @mysql_query($q);
$count_add=mysql_num_rows($res_add);
if ($count_add==0) {
$pass=md5($pass);
$query_add = "INSERT INTO user VALUES ";
$query_add .= "('', '$emails', '$pass', 'y')";
if (@mysql_query($query_add)) {
session_start();
$_SESSION["sess_login"] = $emails;
$_SESSION["sess_pass"] = $pass;
$sess_data=date("U");
$_SESSION["sess_data"] = $sess_data;
header("location: add.php");
exit();
}
else {
$err_add .= "Попробуйте сделать запрос ";
$err_add .= "через некоторое время<BR>";
}
}
else {
$err_add .= "E-mail $emails уже зарегистрирован ";
$err_add .= "ранее!!!<BR>";
$err_add .= "Восстановить пароль можно заполнив форму ";
$err_add .= "ниже<BR>";
}
mysql_close($db);
}
else {
$err_add .= "Не удалось установить соединение с базой ";
$err_add .= "данных<BR>";
}
}
}
примерно так но в базе сохраняется если я в пробеле ставлю какуе то цифру
 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2010 - 15:48:54
Post Id



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


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


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




phpfaq.ru/debug

anton_17 пишет:
но в базе сохраняется если я в пробеле ставлю какуе то цифру

в каком пробеле?

(Отредактировано автором: 27 Октября, 2010 - 15:50:19)



-----
PostgreSQL DBA
 
 Top
anton_17
Отправлено: 27 Октября, 2010 - 15:52:27
Post Id


Новичок


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


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




Блин я же не специально
 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2010 - 16:05:20
Post Id



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


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


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




anton_17 пишет:
Блин я же не специально

Однако Не специально тему открыли? Или код как-то случайно написался и его вообще нету?
тут даже мой демон "пророк" не представляет, что вы хотели сказать... Поясните, а?


-----
PostgreSQL DBA
 
 Top
Uchkuma
Отправлено: 27 Октября, 2010 - 16:53:31
Post Id



Участник


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


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




anton_17, или опишите проблему, чтобы она была ясна другим участникам форума, или я удаляю эту тему.
 
 Top
anton_17
Отправлено: 28 Октября, 2010 - 10:27:12
Post Id


Новичок


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


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




Заранее прошу у всех прощение, вчера не слишком трезвый выложил, поэтому не смог нормально сформулировать вопрос я выделил часть кода с проблемой
if (isset($_POST['add'])) {
$emails=$_POST['emails'];
$pass=$_POST['pass'];
if (!eregi("^[a-z0-9_\.\-]+@([a-z0-9\-]+\.)+[a-z]{2,4}$", $emails)) {
$err_add="Недопустимый адрес E-mail !!!<BR>";
}
if (strlen($emails)>50) {
$err_add .= "Длина E-mail больше допустимой!!!<BR>";
}
if (strlen($pass)>16 || strlen($pass)<6) {
$err_add .= "Длина пароля должна быть в пределах ";
$err_add .= "от 6 до 16 символов.<BR>";
}
if (!eregi("^[a-z0-9_\.\-]{6,16}$", $pass)) {
$err_add .= "В пароле допустимы только буквы ";
$err_add .= "A-Z (a-z) или цифры 0-9<BR>";
}
if (!isset($err_add)) {
if ($db = @mysql_connect(HOST_CONNECT, LOGIN_CONNECT, PASSW_CONNECT)) {
mysql_select_db(DB_CONNECT);
mysql_query("SET NAMES cp1251");
$q = "SELECT * FROM user WHERE email='$emails'";
$res_add = @mysql_query($q);
$count_add=mysql_num_rows($res_add);
if ($count_add==0) {
$pass=md5($pass);
$query_add = "INSERT INTO user VALUES ";

$query_add .= "('2', '$emails', '$pass', 'y')";

if (@mysql_query($query_add)) {
session_start();
$_SESSION["sess_login"] = $emails;
$_SESSION["sess_pass"] = $pass;
$sess_data=date("U");
$_SESSION["sess_data"] = $sess_data;
header("location: add.php");
exit();
}
else {
$err_add .= "Попробуйте сделать запрос ";
$err_add .= "через некоторое время<BR>";
}
}
else {
$err_add .= "E-mail $emails уже зарегистрирован ";
$err_add .= "ранее!!!<BR>";
$err_add .= "Восстановить пароль можно заполнив форму ";
$err_add .= "ниже<BR>";
}
mysql_close($db);
}
else {
$err_add .= "Не удалось установить соединение с базой ";
$err_add .= "данных<BR>";
}
}
Если ставлю цифру то в базе добавляется запись, а если пишу:
$query_add .= "('', '$emails', '$pass', 'y')";
То в базе ни чего не добавляется, почему автозаполнение не работает. Ведь я прописал:
id_user mediumint(9) auto_increment
если опять не понятно написал вопрос, пожалуйста отпишите

(Отредактировано автором: 28 Октября, 2010 - 10:30:33)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Октября, 2010 - 10:57:20
Post Id



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


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


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




Всё равно phpfaq.ru/debug, а именно: "быстрые рекомендации" п.1 и п.2.


-----
PostgreSQL DBA
 
 Top
biperch
Отправлено: 28 Октября, 2010 - 11:18:02
Post Id



Частый посетитель


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


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




anton_17 пишет:
$query_add .= "('', '$emails', '$pass', 'y')";

Открой мне тайну, какой тип переменной (id_user mediumint(9) auto_increment).
Следовательно ты в числовую переменную пытаешься записать строку"" вместо числа, а учитывая что там автоинкремент напиши просто так:
PHP:
скопировать код в буфер обмена
  1. $query_add .= "(0, '$emails', '$pass', 'y')";
 
 Top
anton_17
Отправлено: 28 Октября, 2010 - 11:28:24
Post Id


Новичок


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


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




Допустим в базе создаю таблицу

CREATE TABLE rubr (
id_rubr smallint(6) auto_increment,
name_rubr char(150),
PRIMARY KEY (id_rubr)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Все она создана нормально она существует, потом пишу запрос:

INSERT INTO rubr (id_rubr, name_rubr) VALUES
('', 'Автомобили'),
('', 'Безопасность'),
('', 'Бытовая техника'),
('', 'Города и регионы'),
('', 'Гостиницы'),
('', 'Знакомства'),
('', 'Игры'),
('', 'Интернет'),
('', 'Искусство'),
('', 'Каталоги'),
('', 'Кино'),
('', 'Компании'),
('', 'Компьютеры'),
('', 'Кулинария');

Мне выдает следующее:

#1366 - Incorrect integer value: '' for column 'id_rubr' at row 1

а если нумерую рубрики то все нормально именно так:

INSERT INTO rubr (id_rubr, name_rubr) VALUES
('1', 'Автомобили'),
('2', 'Безопасность'),
('3', 'Бытовая техника'),
ну и так далее, не могу понять в чем дело
Прикреплено изображение (Нажмите для увеличения)
Безымянный.jpg
 
 Top
biperch
Отправлено: 28 Октября, 2010 - 11:31:40
Post Id



Частый посетитель


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


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




anton_17 пишет:
#1366 - Incorrect integer value: '' for column 'id_rubr' at row 1


тут написано что вещественному типу поля id_rubr присваивают неправильное значение инкорект!!!!
Если поле автоинкремент и ты указываеш явно поля которые заполняеш то в поле с автоинкрементом вообще ненадо ничего писать
(Добавление)
INSERT INTO rubr ( name_rubr) VALUES
('Автомобили'),
('Безопасность'),
('Бытовая техника'),
('Кулинария');
такой запрос будет работать
 
 Top
anton_17
Отправлено: 28 Октября, 2010 - 11:39:30
Post Id


Новичок


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


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




Огромное спасибо, все работает, блин вроде по книге делал странно, что автор не написал этого, а я два дня промучился, еще раз спасибо!!! Ха-ха
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB