![]() |
phpmysql.
hail.
Объясните я не пойму. в $db_connect = @mysql_connect($dblocation, $dbuser,$dbpassword); что должно находится в переменой $dblocation, я так понял имя компьютера? И, что в $dbuser, какой логин, логин для чего? и здесь $dbpassword, что мне здесь писать, какой пароль, для чего? Объясните пожалуцта, мне в одиночку разбираться трудновато, я только вчера открыл книжку. |
$dblocation: адрес базы данных (например айпи адрес)
$dbuser, $dbpassword - соответственно логин и пароль пользователя, чтобы в базу данных не каждый залезть смог бы, админ устанавливает пароли и раздаёт права пользователям Насколько я понимаю, у вас база данных на локальной машине?? То есть дома?? Если так, то обычно достаточно $dblocation="localhost", а в $dbuser и $dbpassword - ничего не надо, то есть "", можно ещё попробывать в $dbuser написать "root" и никакого пароля. |
А вот при таком коде:
<? $dblocation ="127.0.0.1"; $dbname = "test"; $dbuser = "root"; $dbpassword = ""; if ($db_connect = mysql_connect($dblocation, $dbuser,$dbpassword)){ echo "OK"; } ?> мне пишут вот это: Fatal error: Call to undefined function mysql_connect() in E:\x\xxx.php on line 7 чё мне не делать? |
Глядеть в php.ini на предмет включения модуля mysql. Ибо он, как говорится, имеет место наличия отсутствия. Или не подключен, или не вкомпилирован, или не настроен - все зависит от версии используемого интерпретатора.
|
Вот, что у меня написано в ini d php5.
[MySQL] mysql.allow_persistent = On mysql.max_persistent = -1 mysql.max_links = -1 mysql.default_port = mysql.default_socket = mysql.default_host = mysql.default_user = mysql.default_password = mysql.connect_timeout = 60 mysql.trace_mode = Off |
Всё моё время уходит на насторйки, и не могу занятся программированием.
Может мне поставить "denwer", что скажете? |
Я его поставил в первый же день и потом занялся сразу программированием :)
Просто знание, как там всё в сервере устроено по началу не нужно - так что если цель - научиться писать скрипты, то Денвер то, что нужно А уже потом, написав солидное количество работающих строк, уже будет легче самому что то настраивать и изменять на сервере, так как придёт понимание Кстати денвер - это русский Вариант, есть ещё и другие аналогичные пакеты (но попробовав Денвер, я сразу к нему привык и другие мне показались неинтересными - но то кому как....) |
slaine
В пхп 5 поддержка mysql по умолчанию выключена. Чтобы включить в php.ini в разделе Dynamic Extensions убери ; перед строкой extension=php_mysql.dll. В разделе Paths and Directories должен быть прописан путь к extensions'ам. На всякий можно скопировать в php_mysql.dll в папку windows\system32. Должно работать. |
Спасибо всем.
А, что значат вот такие вот команды: id_forum int(6) not null auto_increment pos int(6) default null name varchar(10) not null ) TYPE=MyISAM; |
Это кусок команды создания таблицы определенного типа. Каждая строка в скобках есть описание поля таблицы в формате имя тип атрибуты. Подробнее тут.
|
Спасибо.
А как мне вытащить из базы данных только последнее сообщение? как будет выглядеть запрос? |
Необходимо поле по которому будет производиться сортировка для выявления последней строки (строк). Это может быть автоинкрементное поле (ID) или же дата, в общем все что угодно из мысли "последние чего_то_там". Тогда так:
Код:
SELECT |
спасибо всё прекрасно работает.
И ещё я хотел спрорсить как мне в таблице обнулить 'm_id int unique auto_increment' ? я делаю запрос 'delete from table_name', а 'm_id int unique auto_increment остаётся' прежним. |
ЕМНИП, TRUNCATE TABLE table_name - быстрое удаление всех записей, обнуление поля auto_increment и многое другое. Намного быстрее чем DELETE т.к. просто удаляет таблицу и воссоздает ее заново.
|
А как мне использовать данные из двух таблиц?
Например: table1: name table2: name select table1.name table2.name from table1, table2; -так правильно? и как сделать их вывод на зкран в php? |
Вопрос неполный (или же мне лично непонятный).Точнее неполное описание. Таблички (как представление некоторых сущностей) могут быть связанными, а могут и нет. Если первое, то:
Код:
SELECT Если второй вариант, то обратите внимание на такую штуку запроса как JOIN. |
В моей базе есть две таблицы:
ENTER: ====== m_id, login, passw. LINKS: ====== m_id, name, mesg. мне нужно вывести 'login' из ENTER и 'mesg' из LINKS. Код:
$a = mysql_query(" ??? "); какой мне сделать запрос? |
Маленькая поправка:
таблица1 JOIN таблица2 ON условие - то же, что и SELECT что-то FROM таблица1, таблица2 WHERE условие |
slaine
Цитата:
Код:
SELECT e.login, l.mesg FROM ENTER e, LINKS l WHERE e.m_id = l.m_id |
А если мне надо будет сделать так:
Код:
то что мне писать здесь? Код:
|
slaine
$a = mysql_query(" SELECT e.login as LoginE, l.login as LiginL FROM ENTER e, LINKS l WHERE e.m_id = l.m_id"); while ($b = mysql_fetch_array($a)) { echo $b['LoginE']; echo $b['LoginL']; } |
Салют всем.
Помогите разобратся. у меня две таблицы(к примеру): t1 ====== m_id int not null unique auto_increment primary key, name char(30) not null t2 ====== id int not null unique auto_increment primary key, m_id int not null, mess text Они связаны по m_id. Чтобы подсчитать сколько сообщений у пользователя я делаю так: SELECT t1.name AS nameN, count(*) FROM t1,t2 WHERE t1.m_id = t2.m_id GROUP BY t1.name; А как мне сделать записьб тоесть добавлять новые сообщения в t2, как мне быть со внешним ключём(m_id), только если вручную добавлять m_id пользователя? INSERT INTO t1 values ('', '???', '$message')" Объсните, а то в книгах любят писать всё не до конца. |
Скажите, а у вас имена пользователей всегда разные?? То есть не разрешается добавлять пользователя с именем, которое уже есть в базе?? Если так, то поле m_id не нужно. Одна таблица должна содержать все данные о пользователе (имя пользователя в качестве ключа), а таблица с сообщениями будет вместо m_id содержать просто имя добавившего сообщение юзера.
Это было просто предложение..... В вашем случае наверно нужно искать в таблице с юзерами соотетствующий номер по имени SELECT m_id FROM t1 WHERE name='$name' (подобный запрос не нужен если использовать имя юзера в качестве ключа), и потом этот m_id использовать в запросе-вставке |
Спасибо.
ещё хотел спросить, как сделать, чтобы COUNT(*) показывал пользвателей(t1.name) = 0, у которых t2.mess пусто, ато он их просто игнорирует. |
Цитата:
|
Да я не про таблицу сообщений, ну её.
Я имел ввиду подсчитать сколько собщений сделал юзер, например: юзер1 = 1(сообщений) юзер2 = 2(сообщений) юзер3 = 24(сообщений) юзер4 = 0(сообщений) - так вот у кого ноль COUNT(*) его игнорирует, непоказывает, что у него '0'. Что мне можно предпринять? |
Код:
SELECT u_message - текст сообщения. Конечно, в таблице сущности "сообщения" могут быть иные поля. |
Спасибою,
Ноя всё хочу добится того, чтоб если у 'u_user' поле 'u_message' пусто, то COUNT() выводил бы '0', а в итоге выводят '1' messages ======== id int auto_increment, u_user char(30) not null, u_message text В форумах, в списках пользователей ведб так и есть. |
А почему должен быть юзер в таблице с сообщениями, если он ни одного сообщения не написал???
Это перемешивание концепций: У вас есть две таблицы. В таблице users должна быть собрана вся информация о юзерах. В табице messages в свою очередь должна быть собрана вся информация о сообщениях. Последствием этого является то, что пока юзер не создал сообщение, он никаким образом не отбразиться в таблице с сообщениями, поэтому и нулевых полей (где message пустой) не должно быть. В этом случае ситуация, описанная вами, не возникнет и можно спокойно использовать запрос, написанный Prisoner-ом. Ещё одно предложение: если вам часто нужно выводить количество сообщений каждого юзера, то это будет накладно каждый раз делать запрос. чтобы подсчитать количество сообщений, а лучше будет сделать отдельное поле в таблице с юзерами, в котором будете держать число сообщений каждого юзера (как бы одна из характеристик юзера). Это число нужно будет просто каждый раз при добавлении нового сообщения инкрементировать, а при создании юзера ставить по умолчанию 0. Такая схема будет быстрей работать |
Цитата:
|
Цитата:
Не могли бы вы мне показать кусочек такой таблицы? |
Цитата:
|
Спасибо за идею, а то я зациклился на COUNТ()-е.
Всё замечательно работает! |
Скажите, почему здесь нет слэшей перед кавычками?
mysql_query("insert into r1 values ('".addslashes($user)."')"); $auth = mysql_query("select name from r1"); while ($print = mysql_fetch_array($auth)){ echo $print['name']."<BR>"; } |
Внутри открывающей и закрывающей кавычек одного рода (двойные) можно использовать сколь угодно большое число кавычек второго рода (одинарные).
|
Я имел ввиду, когда я ввоже данные типа asd"asd"fasf" на выходе нет слэшей перед
кавычками. Ведь там стоит addslashes, а stipslashes я специально убрал. |
а так идёт??
PHP код:
|
Потому что слеш нужен для правильной передачи параметров, во время записи они убираются, вот если сделать
Код:
echo addslashes($user); |
Vadimironв таком виде мне выдают как строку.
Archy Цитата:
magic_quotes_gps - off. И ещё если я ставлю перед записью в MySQL символ '<', то после него вообще он ничего не воспринимает, незаписывает. Теги у меня не фильтруются вообще. Может у меня какието настройки стоят специальные? И ещё хотел спросить функцию htmlspecialchars() надо использовать до или после записи в БД? |
Всё спасибо разобрался!
|
Время: 12:03. |
Время: 12:03.
© OSzone.net 2001-