Forum Webscript.Ru
Общие => Базы данных => Тема начата: tarya от 29 Июля 2002, 12:17:08
-
добрый день, сегодня решил наконецто попробовать пользоваться базой. программой MYSQL Front создал таблицу, и в нем всего 3 поля, теперь решил туда внести данные который будут использоваться счетчиком. посмотрев книжку по PHP написал код
$db_conn = mysql_connect ("10.0.0.1", "vasya", "vasya") or die ("not connect");
mysql_select_db ("taras", $db_conn) or die ("not select");
$query = "INSERT INTO cout VALUES (NULL, \'100.0.0.1\', \'0\', \'0\')";
mysql_query($sql);
?>
но чтотот не то, ни чего не вносится, ребята научите профана как вносить данные, а далее я разберусь,... -спасибо
-
У тебя три поля, а ты вносишь 4.
У тебя стоит or die при коннекте и выборе из базы, а при запросе - там, где и случаются всегда ошибки - нет.
пиши
mysql_query($sql) or die(mysql_error());
-
tarya
во-первых существует такая хорошая функция как mysql_error(), которая тебе будет выводить ошибки.
Во-вторых было бы неплохо структуру таблицы предоставить.
-
по идее нормал, только надеюсь что это - опечатка:
$query = "INSERT INTO cout VALUES (NULL, \'100.0.0.1\', \'0\', \'0\')";
mysql_query($sql);
А вроде на первый взглядвсе ОК.
-
ага, ситуация такая, я создал таблицу, назвал ее - cout, в ней поля "ip", "host", "hits"
ну и как бы хотелось чтото написать в них, какие то первый значения
-
$ip = \'127.0.0.1\';
$host = \'localhost\';
$hits = 1;
mysql_query(insert into cout values(\'$ip\',\'$host\',\'$hits\')) or die(mysql_error());
?>
-
ThE0ReTiC только наверно так:
$ip = \'127.0.0.1\';
$host = \'localhost\';
$hits = 1;
mysql_query("insert into cout values(\'$ip\',\'$host\',\'$hits\')") or die(mysql_error());
?>
-
Alexandr
Угу. Именно так.
Описался. :)
-
ребята получился короче говоря в конце концов такой код
$ip = "127.0.0.1";
$host = 0;
$hits = 0;
$db_conn = mysql_connect ("10.0.0.1", "tarya", "pass") or die ("not connect");
mysql_select_db ("taras", $db_conn) or die ("not select");
mysql_query("insert into cout values(\'$ip\',\'$host\',\'$hits\')") or die(mysql_error());
?>
выводит в конце такую ошибку -- Table \'taras.cout\' doesn\'t exist
-
tarya
в базу пишут, обычно, не так.
пишут ip (4 байта), время(4 байта), посещенная страница(2 байта), броузер (2 байта)
еще можно сделать таблицу с реферерами.
Хост хранить - только место тратить.
Но это уже в этой теме оффтопик.
-
тебе перевести? :-)
-
tarya
Такой таблицы нет :)
-
Хотя, если нужен только счетчик, без разбивки по дням, то, в принципе, нормально.
только добавлять надо двумя запросами.
сначала запросить, есть ли такой ip, если есть то update count set hits=hits+1 where ip=\'$ip\'
а если нет - то insert
-
все, я разобрался в чем вся ж, просто я неправильно создал таблицу, таблицу создал не "cout" а " cout" вот и ошибки
-
ураааааааааааа, чтто зароботало!
-
А вот еще непонятка небольшая, я вносил "127.0.0.1" а результат "127" было занесено, как так? может более 3 знаков нельзя?
-
tarya
А какой длины и типа у тебя поле, в которое ты это вносишь?
-
у меня поле "TINYINT" , было 3 знака, поменял на 10 но все равно 3 заносится :(
-
tarya Родной, ты ж строку заносишь
либо меняй на Varchar(15), либо убирай точки.
-
tinyint - это число от 0 до 255
ты описание этого типа поля читал, перед тем, как использовать?
-
менять надо на int ;-)
Хотя для такого счетчика - не особо важно.
-
спасибо чтот подсказываете, вот теперь последнее разобраться осталось, как сделать обновление записей? как написать запрос? спасибо что помогаете
-
tarya
UPDATE cout SET hits=hits+1 WHERE ip=\'$ip\'
-
hits=hits+1 это означает что hits+1 ? тоесть с увеличением?, как мне просто написать чтоб без увеличения, увеличивать переменную я буду через ПХП,....
UPDATE cout SET hits WHERE ip=\'$ip\'
получается запись такая - "ОБНОВИТЬ (в таблице cout) поле hits и ip
? примерно правильно понял?
-
tarya
UPDATE cout SET hits WHERE ip=\'$ip\'
SET hits=\'$hits\' WHERE ip=\'$ip\'
Обновляет hits в строке, в которой ip=$ip
-
UPDATE cout SET hits WHERE ip=\'$ip\'
UPDATE cout SET hits=$hits where ip=$ip
-
tarya
Форумы, это, конечно, хорошо...
Но в сети есть и учебники по mysql, и сайты для новичков...
Спорим, Теоретику скоро надоест отвечать на вопросы, которые можно посмотреть в учебнике? ;-)
-
RomikChef
Угу - мне уже надоело.
На сегодня лимит исчерпан.
:)
-
собственно, запросы
SELECT
INSERT
UPDATE
DELETE
основные. Их надо знать до того, как начнешь делать хоть что-то.
http://www.myphp.dem.ru/
-
tarya
http://www.mysql.ru
Читай...
-
ребята, я понимаю чтот заколебал вас конечно, но последний вопросик может своим вниманием уделите.
какой тип данных должен быть для полей?
для текста? и как еще интересно в поле id заносится последовательно 1,2,3,4...... при новой записи,... плиз помогите, пока отыщю к доках пол дня пройдет
-
Для текстов, которые длиной меньше, чем 255 символов - varchar
Больше - text
Автоинкрементный id созадется так:
CREATE TABLE table (
id int unsigned NOT NULL auto_increment,
pole1 varchar,
... другие поля
PRIMARY KEY (id)
);
-
http://www.mysql.ru/docs/pautov/sql.htm
Номер столбца может иметь дополнительное ключевое слово AUTO_INCREMENT, чтобы автоматически получить номер = самый большой номер столбца + 1 для каждой вставки, в которой номер столбца = 0 или NULL. ТО ЕСТЬ, если Вы попробуете вставить значение ноля в числовой столбец, который имеет атрибут AUTO_INCREMENT, Вы получите номер столбца, который на 1 большим, чем самый большой предварительно использованный номер.
-
для текста?
char, varchar, text
в поле id заносится последовательно 1,2,3,4
объявляешь поле как
id int(11) NOT NULL auto_increment
, а когда инсертишь, то NULL
-
Э...
при новой записи оно само появляется, если не писать туда никаких чисел.
-
при новой записи оно само появляется, если не писать туда никаких чисел
В смысле? Пример....
-
при создании как вы научили -TYPE -int, not null, autoincrement выдается ошибка -"incorrect table definition; there can only be one auto column and it be difined as a key"
чтоо делатьь что делать? :(
-
tarya
чтоо делатьь что делать
Внимательней читать доки... :)
Create table cout(
id int not null auto_increment primary key,
...
)
Alexandr
Так. Ща ругаться начну... :mad:
create table test(
id ... auto_increment...
filed2 ...
filed3 ...
filed4...
)
insert into table test(filed2,filed3,filed4) values(\'$value1\',\'$value2\',\'$value3\')
id автоматом увеличится.
Пробуйте :)
-
или так
insert into table test values(NULL,\'$value1\',\'$value2\',\'$value3\')
то есть, если среди вводимых полей указывать id, то тогда присваивать ему значение NULL, или 0.
Оно увеличится.
Какое еще у тебя там TYPE autoincrement?
-
ребята родимые не ругайтесь, я пользуюсь MySQL Front только разбераться начинаю,.. спасибо
-
А ВОТ НЕ НАДО MYSQL FRONT пользоваться!
РУКАМИ надо, чтобы в голове что-то застревало!
-
я бы руками начал делать да вот консолько нету у меня откуда мне писать все это, вы уж простите,...
но пока чтотот начало получаться,, с полями начал разбираться,... :)
-
ThE0ReTiC
create table test(
id ... auto_increment...
filed2 ...
filed3 ...
filed4...
)
Надо так
create table test(
id ... auto_increment...
filed2 ...
filed3 ...
filed4...
PRIMARY KEY (id)
)
-
Alexandr
Надо говорить не надо, потому, что можно сделать и так:
id ... not null primary key auto_increment,
-
tarya
окей, в этом фронте есть окно ввода запросов?
вот туда и вводи, и таблицы создавай только так.
Написал запрос CREATE TABLE - скоипровал туда - исполнил - посмотрел, что ответила MySQL
-
Alexandr
auto_increment должен быть обязательно проидексирован, но совсем не обязательно он должен быть primary key ;)
-
я бы руками начал делать да вот консолько нету у меня откуда мне писать все это, вы уж простите,...
так заведи себе консольку ;)
если ты под виндой работаешь, то поставь себе MySQL и с помощью mysql.exe работай. Это консольное приложение.
-
fidget
в mysql - обязательно.
Ну разве что, составной.
Другое дело, что если не указать, муська сама его праймари сделает
-
RomikChef
не знаешь - не говори.
в MySQL - не обязательно ;)
mysql> create table test(
-> id int auto_increment,
-> index(id));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into test values
-> (1),(2),(1);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from test;
+----+
| id |
+----+
| 1 |
| 1 |
| 2 |
+----+
3 rows in set (0.01 sec)
-
Мда, пожалуй, ошибся.