Просмотр полной версии : [sql] Вопросы по БД
Предлогаю в этой теме задавать вопросы связаные с MySQL, MSSQL, PostgreSQL, Oracle и т.д.
-=lebed=-
26.02.2008, 01:17
какая самая быстродействующая СУБД из представленных в первом посте?
какая самая быстродействующая СУБД из представленных в первом посте?
Informix — СУБД класса Enterprise (корпоративная), подходящая для управления данными в среднем и крупном бизнесе.
Отличается высокой надёжностью и быстродействием, встроенными средствами восстановления после отказов, наличием средств репликации данных и обеспечения высокой доступности, возможностью создания распределённых систем.
тоже относительно популярная.
nc.STRIEM
27.02.2008, 00:41
На хосте стоит форум, все нормально работает, пытаюсь подключиться с другого скрипта к этой же бд с тем же логином и паролем, использую функцию mysql_connect() выдает ошибку Client does not support authentication protocol requested by server; consider upgrading MySQL client
http://www.google.ru/search?aq=-1&oq=old_passwod+mysql&complete=1&hl=ru&newwindow=1&q=old_password+mysql&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
Обучающая статья от ведущего разработчика phpMyAdmin Марка Делисла
Автор: Марк Делисл
Перевод: Иван Шумилов
Данная статья предназначена для веб-мастеров, которые только начинают знакомиться с основами SQL. В качестве инструментария используются сервер баз данных MySQL и интерфейс их администрирования - phpMyAdmin. Последний и будет использоваться в данной статье в качестве инструмента для изучения SQL.
Что такое SQL?
SQL
(англ. Structured Query Language - язык структурированных запросов) - универсальный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. Этот язык был разработан IBM (экспериментальная СУБД "System R") в 1974-1979 годах. Первый стандарт языка SQL был принят Американским национальным институтом стандартизации (ANSI) в 1987 (так называемый SQL level 1) и несколько уточнён в 1989 году (SQL level 2), 1992 и 1999 году. После этого, индустрия начала широко использовать SQL как язык реляционных баз данных, и на сегодняшний день практически каждая база данных основана на SQL.
Архитектура данных, к которой обращается SQL называется
реляционной
. В реляционных базах данных все данные представлены в виде простых таблиц, разбитых на строки и столбцы, на пересечении которых расположены данные. Запросы к таким таблицам возвращают таблицы, которые сами могут становиться предметом дальнейших запросов. Каждая база данных может включать несколько таблиц, которые, как правило, связаны друг с другом, откуда и произошло название реляционные.
В данной статье мы будем использовать MySQL, популярную открытую реализацию SQL, которая предоставляется абсолютным большинством хостинг-провайдеров.
Инструментарий для данной статьи
Для выполнения упражнений, приведенных в данной статье, потребуется доступ к MySQL-серверу. В качестве интерфейса для MySQL используется phpMyAdmin - PHP приложение, запущенное на Web-сервере. Для полного ознакомления с возможностями phpMyAdmin рекомендуется прочитать книгу "Mastering phpMyAdmin for effective MySQL Management".
Эта статья познакомит Вас с основами синтаксиса SQL, время от времени, предлагая Вам ввести выражения; покажет, как phpMyAdmin генерирует MySQL-запросы на основе ваших действий через интерфейс.
Создание таблиц в phpMyAdmin
В качестве примера, мы будем использовать географическую информационную систему. Допустим, мы решили, что нам необходима информация о городах и странах - таким образом, нам понадобятся две таблицы, которые будут частью базы данных `geodb`. Для создания таблиц можно использовать вкладку "Structure" на странице просмотра базы данных, или использовать блок SQL-запросов для ввода соответствующего выражения:
Чтобы создать таблицу, воспользуемся выражением CREATE TABLE, в котором мы зададим имя нашей новой таблицы. Выражение начинается с CREATE TABLE, после которой следует имя таблицы. Затем в скобках указывается список столбцов, и информация о ключах. Каждому столбцу дается имя, указывается тип данных, указывается атрибут NULL или NOT NULL (здесь, NOT NULL означает, что колонка не может иметь значение NULL), и значение по умолчанию, если оно уместно.
CREATE TABLE cities ( id int(11) NOT NULL auto_increment, city_name varchar(50) NOT NULL default '', latitude varchar(15) NOT NULL default '', longitude varchar(15) NOT NULL default '', population int(11) NOT NULL default '0', country_code char(2) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM AUTO_INCREMENT=1 ;
Столбец id - это первичный ключ (primary key), колонка, которая уникально идентифицирует каждый город. Тип данных этого столбца - INT (целое число нормального размера), MySQL назначает уникальные значения для этого столбца, благодаря атрибуту auto_increment. Обратите внимание на то, что мы не можем использовать название городов в качестве первичного ключа, т.к. некоторые имена городов не уникальны в мире. Для отображения численности населения мы также используем целое число.
Другие столбцы используют в качестве типов данных строки фиксированной длины (CHAR) либо строки переменной длины (VARCHAR). Когда мы точно знаем длину строки, лучше использовать CHAR, задавая длину столбца как CHAR(2). В противном случае, мы используем в качестве типа данных строки переменной длины, указывая только максимальную длину строки, например: VARCHAR(15).
После списка столбцов, мы можем указать дополнительные параметры таблицы, например, её тип, первое значение для столбца автоинкремента. SQL-выражение заканчивается точкой с запятой.
Создав таблицу для городов, мы делаем ту же операцию, но на этот раз для таблицы стран.
CREATE TABLE countries ( country_code char(2) NOT NULL default '', country_name varchar(100) NOT NULL default '' ) TYPE=MyISAM;
Заметьте, что столбец `country_code` присутствует в обеих таблицах. Это отражает принцип связи: country_code в `cities` связан с одноименным столбцом в таблице `countries`. Таким образом, мы экономим на месте, указывая название страны в базе данных только однажды.
В другой статье (Migrating to InnoDB) техника связывания рассматривается более подробно. После того как таблицы созданы, следует ввести в них какие-нибудь данные.
Изменение табличных данных с помощью phpMyAdmin.
В данном разделе мы изучим базовый синтаксис выражений INSERT, UPDATE, DELETE, и SELECT.
Добавление данных с помощью INSERT
Для начала изучим выражение INSERT, на примере кода, который генерирует phpMyAdmin при выполнении операции INSERT. Для этого открываем вкладку Insert на странице просмотра таблицы `countries`, и вводим данные о стране:
После того как мы кликаем на Go, данные записываются в таблицу и phpMyAdmin показывает нам использованное выражение INSERT:
INSERT INTO `countries` (`country_code` , `country_name` ) VALUES ('ca', 'Canada');
После части INSERT INTO, следует имя таблицы. В MySQL, мы можем заключать имена таблиц и имена столбцов в обратные галочки "`", если в именах используются спецсимволы, зарезервированные слова. Затем мы открываем первую скобку, перечисляем столбцы в которые будет осуществлена вставка, разделяя их друг от друга запятыми. После перечисления списка названий столбцов скобка закрывается и указывается зарезервированное слово VALUES, после которого в скобках перечисляются значения которые нужно вставить в таблицу, причем перечисляются в том же порядке, что и названия столбцов. Если значения имеют символьный тип данных, необходимо заключать их в кавычки.
Давайте занесем в таблицу `cities` данные города:
INSERT INTO `cities` ( `id` , `city_name` , `latitude` , `longitude` , `population`, `country_code` ) VALUES ('', 'Sherbrooke', '45 23 59.00', '-71 46 11.00', 125000, 'ca');
Здесь, мы указываем пустое значение для id, потому что атрибут автоинкремента данного столбца обеспечивает автоматическое выставление уникального значения. Также следует обратить внимание, что значение `population` - числовое, поэтому не заключено в кавычки.
Давайте закончим этот раздел вставкой некоторых данных для нескольких других стран и городов, которые понадобятся нам позже.
INSERT INTO `countries` ( `country_code` , `country_name` ) VALUES ('zh', 'China'); INSERT INTO `cities` ( `id` , `city_name` , `latitude` , `longitude` , `population` , `country_code` ) VALUES ('', 'Shanghai', '31 13 58.00', '121 26 59.99', 11000000, 'zh');
Обновление данных с помощью UPDATE
Сначала кликните на `Browse` для таблицы `cities` в результате будет выведена пока единственная запись
Кликая по иконке в виде карандаша на бумаге (или ссылке Edit), мы переходим на панель редактирования данной строки. Изменим значение столбца `population` на 130000. После щелчка на `Save`, phpMyAdmin отображает следующее выражение:
UPDATE `cities` SET `population` = '130000' WHERE `id` = '1' LIMIT 1 ;
Ключевое слово в данном выражении - `UPDATE`, за которым следует название таблицы. Слово `SET` предваряет список модификаций (в нашем случае - только для столбца `population`) который записывается в формате "столбец = новое значение".
Мы видим, что в выражении присутствует условие: WHERE `id` = '1', в котором используется первичный ключ, чтобы ограничить изменение значения столбца `population` только данной строкой, т.е. только для данного города.
Часть limit 1 добавляется phpMyAdmin-ом и является гарантией, что если первичный ключ не задан, изменения не будут применены более чем к одной записи.
За один запрос `UPDATE` могут быть изменены значения сразу нескольких столбцов:
UPDATE `cities` SET `city_name` = 'Sherbrooke, Quebec', `population` = '130001' WHERE `id` = '1' LIMIT 1 ;
Удаление данных с помощью DELETE
В режиме `Browse` (просмотр) таблицы `cities`, кликните по красной иконке корзины (или ссылке Delete) - будет сгенерирован запрос, запрашивающий подтверждение выполнения следующего выражения:
DELETE FROM `cities` WHERE `id` = '1' LIMIT 1 ;
Синтаксис здесь очень прост, и включает только название таблицы, и условие при котором будет выполнена операция удаления.
Исключение условия WHERE из запросов UPDATE или DELETE вполне допустимо в SQL, но в таком случае действие выражения будет применено к каждой записи таблицы!
Выборка данных с помощью SELECT
Извлечение информации из таблиц - вероятно наиболее часто используемый вид запроса. Например, запросы SELECT позволяют получить ответы на подобные вопросы: "какие города имеют численность населения большую, чем данное число?".
Фактически, мы уже предварительно использовали SELECT, когда кликали на ссылку Browse для таблицы `cities`. Это сгенерировало простейшую форму выражения запроса SELECT:
SELECT * FROM `cities` LIMIT 0,30;
Звездочка здесь означает "все столбцы". Мы добавили FROM и имя таблицы, в которой будет выполнен запрос на выборку. LIMIT 0,30 означает что выборка начинается с записи номер 0 (самой первой), и содержит максимум 30 записей.
Вкладка Search позволяет увидеть большее количество опций для запроса SELECT. Выберем вкладку Search для таблицы cities, и выберем только те столбцы, которые нам нужны:
Затем справа от списка столбцов мы выберем порядок сортировки полученной выборки по столбцу `population` по убыванию:
В результате phpMyAdmin сгенерирует следующий запрос:
SELECT `city_name` , `population`
FROM `cities`
WHERE 1
ORDER BY `population` DESC LIMIT 0,30;
Мы видим, что звездочка была заменена списком столбцов, разделенных запятыми. Условие WHERE 1, добавленное phpMyAdmin-ом, всегда истинно и выбирает все записи. Чуть позже мы увидим, что можно заменить его другим условием. Кроме того, появляется условие ORDER BY , после которого следует название столбца по которому мы хотим сортировать результат выборки, и ключевое слово DESC для сортировки по убыванию (мы могли также использовать ASC для сортировки по возрастанию).
Условия в SQL-запросах
Самым простым способом добавить условие - клик по SQL-query: Edit, на странице результатов, в результате которого будет открыто всплывающее окно "Query". Добавим условие для столбца `country`:
SELECT `city_name` , `population`
FROM `cities`
WHERE country_code = 'zh'
ORDER BY `population` DESC;
Это условие выберет все города, находящиеся в Китае. При обозначении условий может быть использовано богатое множество операторов и функций. Вот - два примера:
Найти канадские города с численностью населения более 100000:
WHERE population > 100000 AND country_code = 'ca';
Найти города, чьи названия начинаются с символа "A":
WHERE city_name like 'A%'
Функции группировки
Итоговая информация может быть сгенерирована в результате группировки по определенному столбцу. Давайте узнаем среднюю численность городского населения в стране:
SELECT country_code, AVG(population)
FROM cities
GROUP BY country_code
Другие возможные функции группировки - MIN(), MAX(), SUM() и COUNT(), которые вычисляют соответственно минимальное значение, максимальное значение, сумму значений, и число записей. Например, с помощью следующего запроса мы можем получить число городов в стране:
SELECT country_code, count(city_name) FROM cities
GROUP BY country_code;
Объединения
Обычно, реляционная база данных включает множество таблиц, связанных общими ключами. Часто возникает необходимость в запросах сразу для нескольких таблиц. Связать, или объединить, таблицы можно с помощью различных методов; мы сосредоточимся на самом простом методе, заключающемся в сравнении ключей.
В нижерассмотренном запросе, условие FROM содержит список названий таблиц, разделенных запятыми. В списке столбцов, мы используем названия таблиц и точку в качестве префикса перед каждым названием столбца (в этом нет необходимости в случае, если все столбцы из одной таблицы).
SELECT cities.city_name, cities.population, countries.country_name
FROM cities, countries
WHERE cities.country_code = countries.country_code LIMIT 0,30
Заключение
Те элементарные выражения, что были рассмотрены нами здесь не раскрывают полностью возможности SQL. Однако, эта статья поверхностно осветила основы SQL, и показала как использовать phpMyAdmin в качестве инструмента для углубления знаний в SQL.
Об авторе
Марк Делисл начал свое участие в развитии phpMyAdmin в декабре 1998 (именно он разработал первую многоязычную версию). С мая 2001, принимал активное участие в проекте как разработчик и проектный администратор.
Работает с 1980 в колледже Cegep de Sherbrook (Квебек, Канада), разработчиком программного обеспечения и системным администратором. Он также преподавал организацию сети, безопасность, серверы Linux, и прикладное программирование PHP/MySQL.
Издательство Packt Publishing выпустило первую книгу по phpMyAdmin: Mastering phpMyAdmin for effective MySQL Management, автором которой является Марк Делисл
Первоисточник: http://www.php-editors.com
Гы, это он значит косяки в phpMyAdmin допустил и вверг меня тем самым в некоторые заблуждения отнасительно синтаксиса, я имею ввиду косяки не в плане безопасности (которые тоже есть кстати) а косяки в плане SQL
Coder007
03.03.2008, 00:09
Y menia vopros,kak zapustit' MySql5 iz komandnoi stroki
C:\WebServer\usr\local\mysql5\bin\mysql -u root -p mysql ;ne zapyskaetsia,parol' ia ne menial :confused: ?
Mysql4 idet bez problem,a Mysql5 ne hochet.
C:\WebServer\usr\local\mysql5\bin\mysql -uroot -pmysql
Coder007
03.03.2008, 19:49
c:\WebServers\usr\local\mysql5\bin>mysql -uroot -pmysql
mysql: Character set 'cp1251' is not a compiled character set and is not specifi
ed in the '\usr\local\mysql5\share\charsets\Index.xml' file
Это не ошибка конекта
Ищи проблему в mysql5\share\charsets\Index.xml
Видимо не может установить кодировку cp1251, т.к. она не указана в том файле =\
Coder007
04.03.2008, 20:21
bul.666!Y menia Vista,russckie progi idyt,codirovki toge.I esche voprosik-dlia treninga po
SQL-injection Denver3 podhodit ili est' cheto luchshe?;)
мускуль 5.1 не понимает запос вида
SELECT count FROM items WHERE owner_id=53 AND item_id=52
выдаёт
ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count FROM items WHERE owner_id=53 AND item_id=52' at line 3
mysql>
SELECT count
count это название или функция?
Ипользуй кавычки для отделения имен полей и значений
SELECT `count` FROM `items` WHERE `owner_id` = '53' AND `item_id` = '52'
Это раз.
Два:
мускул говорит, что у тебя ошибка в третей строке запроса, сам же запрос однострочный, еще видно, что работал в консоли, отсюда вывод, что перед этим запросом были другие, после который не была проставлена ";", поэтому мускул понял этот запрос как часть другого и матюгнулся
blackybr
06.03.2008, 20:35
юзай `` при врубленной директиве игнор спейсис или анси у тебя распознается скорее всего как ф-ия а не колонка count, т.к. она в мускуле зарезервированна.. и.. почему на 3ей строке? Оо
Ребят, подскажите команду для вывода данных, причем чтобы они шли через какой нибудь знак (допустим ':'):
SELECT id,email FROM data INTO OUTFILE 'D:/test.txt' ... (дальше как? я насколько помню надо было писать fields defined by ':' - забыл просто))))
В конечном итоге чтобы вид был:
id1:email1
id2:email2
blackybr
06.03.2008, 20:37
... concat(id,':',email) ...
... concat(id,':',email) ...
Спасибо за помощь blackybr, но это не то...
Надо чтобы из базы вытягивались id и email и писались в файл разделенные :.
забыл сказать что это mysql
blackybr
06.03.2008, 20:53
как не то ? сам же сказал
Надо чтобы из базы вытягивались id и email и писались в файл разделенные :
SELECT concat(id,char(58),email) FROM data INTO OUTFILE 'D:/test.txt'
ну или незакодированным : в кавычко
Во!!! Ты просто гений! Теперь все заработало)))) ++
Огромное спасибо =)
Cecil B Demented
23.03.2008, 12:11
Подскажите, нужно ли обязательно закрывать соединение с бд как mysql_close($link);
после того как скрипт к примеру полностью отработал и выдал результат?
Сильно ли это влияет на производительность?
blackybr
24.03.2008, 20:24
возник вопрос
можно ли без сторонних языков, только возможностями mysql произвести сл. действия:
есть табла, с числовой колонкой, со значениями одинаковой длинны (к примеру значения 12345, 91311, 12912, 90122, 64400 и тд).
так вот, можно ли используя только скл запрос заменить ВСЕ опеределеенные значения на другие (конкретные, для примера возьмем 1 заменить на 7, 2 на 4, 3 на 5 ), так что после запроса у нас бы было 74545, 97577 и тд..)
естественно надо изменять не каждое отдельное значение, ведь их имеется не один десяток тысяч.
Если поле фиксированной длины, то можно попробовать вот так:
mysql> select * from test;
+-------+------+
| id | link |
+-------+------+
| 12345 | 1 |
| 91311 | 2 |
| 12912 | 3 |
| 90122 | 4 |
| 64400 | 5 |
+-------+------+
5 rows in set (0.00 sec)
mysql> create temporary table testtest (link int, a1 int, a2 int, a3 int, a4 int, a5 int) select link, floor(id/10000) as a1, floor(id/1000)-floor(id/10000)*10 as a2, floor(id/100)-floor(id/1000)*10 as a3, floor(id/10)-floor(id/100)*10 as a4, mod(id,10) as a5 from test;
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from testtest;
+------+------+------+------+------+------+
| link | a1 | a2 | a3 | a4 | a5 |
+------+------+------+------+------+------+
| 1 | 1 | 2 | 3 | 4 | 5 |
| 2 | 9 | 1 | 3 | 1 | 1 |
| 3 | 1 | 2 | 9 | 1 | 2 |
| 4 | 9 | 0 | 1 | 2 | 2 |
| 5 | 6 | 4 | 4 | 0 | 0 |
+------+------+------+------+------+------+
5 rows in set (0.01 sec)
mysql> update testtest set a1=(case a1 when 1 then 7 when 2 then 4 when 3 then 5 else a1 end), a2=(case a2 when 1 then 7 when 2 then 4 when 3 then 5 else a2 end), a3=(case a3 when 1 then 7 when 2 then 4 when 3 then 5 else a3 end), a4=(case a4 when 1 then 7 when 2 then 4 when 3 then 5 else a4 end), a5=(case a5 when 1 then 7 when 2 then 4 when 3 then 5 else a5 end);
Query OK, 4 rows affected (0.00 sec)
Rows matched: 5 Changed: 4 Warnings: 0
mysql> update test t1 inner join testtest t2 using (link) set t1.id = t2.a1*10000+t2.a2*1000+t2.a3*100+t2.a4*10+t2.a5;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 5 Changed: 4 Warnings: 0
mysql> select * from test;
+-------+------+
| id | link |
+-------+------+
| 74545 | 1 |
| 97577 | 2 |
| 74974 | 3 |
| 90744 | 4 |
| 64400 | 5 |
+-------+------+
5 rows in set (0.00 sec)
Подскажите, хочу установить автоматическую раздачу icq номеров, как лучше, делать для нее отдельную БД или в общую вместе с булкой???
ы.... что нужно написать что бы создать БД с именем HATE и в ней две таблицы:
downchat_messages
id - bigint
date - tinytext
name - text
style - text
text - text
downguest_messages
id - bigint
datetime - tinytext
name - tinytext
mail - tinytext
url - tinytext
text - text
с меня +++++++++++++ и 50 сообщений в личку с респектами
$sql1= 'CREATE TABLE `downchat_messages` ('
. ' `id` BIGINT NOT NULL , '
. ' `date` TINYTEXT NOT NULL, '
. ' `name` TEXT NOT NULL, '
. ' `style` TEXT NOT NULL, '
. ' `text` TEXT NOT NULL'
. ' )';
$sql2= 'CREATE TABLE `downguest_messages` ('
. ' `id` BIGINT NOT NULL , '
. ' `datetime` TINYTEXT NOT NULL, '
. ' `name` TEXT NOT NULL, '
. ' `mail` TEXT NOT NULL, '
. ' `url` TEXT NOT NULL, '
. ' `text` TEXT NOT NULL'
. ' )';
Как-то так...
Вообще-то сначала надо
CREATE DATABASE hate;
Уж потом CREATE TABLE. На поля id, возможно, повесить PRIMARY KEY
Хотя ты наверное хочешь, чтобы id был
а) первичным
б) автоинкрементируемым
Тогда
сторочка с id будет такой:
. ' `id` BIGINT NOT NULL AUTO_INCREMENT, '
а последние - такими:
. ' `text` TEXT NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ' )';
Здравствуйте, у меня вопрос: Как предотвратить неконтролируемое увеличение размера журнала транзакций? в mssql server 2005
Foes, http://support.microsoft.com/kb/873235/ru
Isis, это тупо в гугл набрал: Как предотвратить неконтролируемое увеличение размера журнала транзакций
Это общая информация и это я уже видел и читал.
DEMOGORGON
06.04.2008, 17:40
В чём проблема?
Ввожу данные в таблицу БД всё нормально.
А вот при выводе выборки на страницу транслит отоброжается как надо, а кирилица - чёрт знает как.
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
DEMOGORGON
09.04.2008, 09:16
Isis, спасибо, что нашёл ошибку.
Здравствуйте, у меня вопрос: Как предотвратить неконтролируемое увеличение размера журнала транзакций? в mssql server 2005
Вообще это неоднозначный вопрос. Например бэкапить базу каждый день\два\неделю (нужное подчеркнуть, смотря какая интенсивность заполнения и тп) - и после бэкапа с чистой совестью чистить журнал, т.к. бэкап у нас есть, и мы в случае чего сможем с чистой совестью его "накатить".
Разросшийся журнал транзакций можно урезать. Сначала сделать в Query Analyzer
BACKUP LOG dbname WITH NO_LOG
BACKUP LOG dbname WITH TRUNCATE_ONLY
Потом сделать Shrink Database, где в списке выбрать не базу (dbname_Data), а журнал транзакций (dbname_Log)
как можно заюзать такую ошибку? извините если не правильно запостился
An error occurred while evaluating the expression:
"#Chr(64+ID)#"
Error near line 3, column 34.
--------------------------------------------------------------------------------
Cannot convert 1' to number.
Please, check the ColdFusion manual for the allowed conversions between data types
The error occurred while processing an element with a general identifier of (CFPARAM), occupying document position (3:1) to (3:46).
Date/Time: 04/11/08 11:02:55
Browser: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QS 4.2.1.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Remote Address: какой нить
Query String: ID=1'
Buffalon
12.04.2008, 15:48
Здрасте... .Решил написать да/Вроде тема отсюда )
Как вот это можно реализовать >PHP<+MySQL
3. Управление распределённой БД
Макс. балл: 120.
Макс бонус балл: 54.
Задание:
1. Имеется распределенная БД, состоящая из 3 серверов MySQL.
2. Требуется написать клиент к данной БД, реализующий функции SELECT / INSERT / DELETE / UPDATE / ALTER / CHANGE.
3. Пользователь, используя, данный клиент, не должен знать о том, что БД – распределённая. Связь серверов осуществляется посредством сокетов.
<pre>Олмпиада по интернет-программированию 2006г</pre>
Здрасте... .Решил написать да/Вроде тема отсюда )
Как вот это можно реализовать >PHP<+MySQL
3. Управление распределённой БД
Макс. балл: 120.
Макс бонус балл: 54.
Задание:
1. Имеется распределенная БД, состоящая из 3 серверов MySQL.
2. Требуется написать клиент к данной БД, реализующий функции SELECT / INSERT / DELETE / UPDATE / ALTER / CHANGE.
3. Пользователь, используя, данный клиент, не должен знать о том, что БД – распределённая. Связь серверов осуществляется посредством сокетов.
<pre>Олмпиада по интернет-программированию 2006г</pre>
с википедии содрал? тэги тоже? ))
а как пользователь узнает (пользуясь скрипт-клиентом) к какой БД он коннектиться?
Т.к. здесь вопросы по бд, тут и задам. У меня есть 3 таблицы, во всех трех есть id пользователя, но в одной базе(я её сам создавал) - нету id, поле есть, но как данные перенести туда я не знаю, т.к. в этой 3 таблице есть поля в которые нужно скопировать данные из 1 и 2 таблицы. Желательно сделать привязку 3 таблицы к 1 и 2, я что-то читал про cascade, но ведь 3 таблица пустая... Пытался в доках найти, но на Mysql.ru что-то ничего нужно не вычитал(
у меня phpmyadmin стоит, если кто может - объясните как через него сделать.
stomp, если я правильно понял, то так.
Предположим, в таблице t1 хранятся имена, в таблице t2 - адреса соответствующие именам адреса. В таблицу t3 надо запихать ид пользователя, его имя и адрес (объединенные данные из первых двух таблиц)
mysql> select * from t1;
+------+-------+
| id | name |
+------+-------+
| 1 | John |
| 2 | Mary |
| 3 | Suzen |
| 4 | James |
| 5 | Carry |
+------+-------+
5 rows in set (0.01 sec)
mysql> select * from t2;
+------+------------+
| id | address |
+------+------------+
| 1 | Washington |
| 2 | New York |
| 3 | Washington |
| 4 | Oklahoma |
| 5 | Texas |
+------+------------+
5 rows in set (0.01 sec)
mysql> insert into t3 select t1.id, t1.name, t2.address from t1 left join t2 using (id);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from t3;
+------+-------+------------+
| id | name | address |
+------+-------+------------+
| 1 | John | Washington |
| 2 | Mary | New York |
| 3 | Suzen | Washington |
| 4 | James | Oklahoma |
| 5 | Carry | Texas |
+------+-------+------------+
5 rows in set (0.00 sec)
Да спасибо, частично понял, как понять:
left join t2 using (id); ??
И что сделать, чтобы при добавлении данных в таблицы 1 и 2 - они сразу же добавлялись к 3? использовать cascade?
Да спасибо, частично понял, как понять:
left join t2 using (id); ??
это объединение таблиц t1 и t2, юзаем поле id
тоесть то, которое заносим в t3
что сделать, чтобы при добавлении данных в таблицы 1 и 2 - они сразу же добавлялись к 3? использовать cascade?
Вообщем после набора insert.... и т.д. мне выдало:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Все поля в 3 таблице null не понимаю в чем может быть проблема?
Люди подскажите веб клиент типа phpmyadmin, только на mssql
{
$dt=date('Y-m-d H:i:s');
mysql_query('INSERT INTO messages VALUES(NULL,'.$_SESSION['id'].','.$lg['id'].',"'.$_POST['subject'].'","'.$_POST['msg'].'","'.$dt.'",0);');
}
народ , подскажите почему не записывается инфа в БД? что не так написано?
Корвин, попробуй заюзать так
{
$dt=date('Y-m-d H:i:s');
$subject = mysql_real_escape_string ($_POST['subject']);
$msg = mysql_query_escape_string ($_POST['msg']);
mysql_query('INSERT INTO messages VALUES (NULL, \'' . $_SESSION['id'] . '\',\'' . $lg['id'] . '\',\'' . $subject . '\',\'' . $msg . '\',\'' . $dt . '\',0)') or die (mysql_errno() . ':' . mysql_error());
}
попробовал код, выводит ошибку
Fatal error: Call to undefined function mysql_query_escape_string()
... сделал так :
{
$dt=date('Y-m-d H:i:s');
$subject = $_POST['subject'];
$msg = $_POST['msg'];
mysql_query('INSERT INTO messages VALUES (NULL, \'' . $_SESSION['id'] . '\',\'' . $lg['id'] . '\',\'' . $subject . '\',\'' . $msg . '\',\'' . $dt . '\',0)') or die (mysql_errno() . ':' . mysql_error());
}
все заработало
Я там с кодом ступил =))
$msg = mysql_real_escape_string ($_POST['msg']);
Сорри
ЗЫ. Корвин, дай линк на свой движок, я в скулях потренируюсь =))
всмысле доступ к фтп? сорь, мне за это голову открутят=)
:cool: конфиденциально :cool:
PS и зачем этот реал ескейп? если как йа сделал все заработало...
PS и зачем этот реал ескейп? если как йа сделал все заработало...
дай адрес сайта где твой двиг лежит, я тебе фокус покажу)))
$ayd = $_POST['id'];
$ayduser = $_POST['id_user'];
$taskname = $_POST['name'];
$taskstatus = $_POST['status'];
$taskpriority = $_POST['priority'];
$taskcomments = $_POST['comments'];
$tasktask = $_POST['task'];
mysql_query('UPDATE `tasks` SET `id_user`="'.$ayduser.'", `name`="'.$taskname.'", `status`="'.$taskstatus.'", `priority`="'.$taskpriority.'", `comments`="'.$taskcomments.'", `task`="'.$tasktask.'" WHERE `id`="'.$ayd.'" LIMIT 1;');
Header('Location:index.php');
поидее должна обновлятся инфа в елементе с айдишником - $ayd, но у меня почему то создается еще один в котором первые три параметра равны нулю а остальные из формы которую заполнял, что не так подскажите плиз...
А где можно почитать что такое SQL, mySQL?
И как делать БД
НTL
http://aeweb.ru/books/php_book/103-spravochnik-po-jazyku-mysql.html
НTL
http://aeweb.ru/books/php_book/103-spravochnik-po-jazyku-mysql.html
Спс за рус описание
Buffalon
13.05.2008, 21:42
$ayd = $_POST['id'];
$ayduser = $_POST['id_user'];
$taskname = $_POST['name'];
$taskstatus = $_POST['status'];
$taskpriority = $_POST['priority'];
$taskcomments = $_POST['comments'];
$tasktask = $_POST['task'];
mysql_query('UPDATE `tasks` SET `id_user`="'.$ayduser.'", `name`="'.$taskname.'", `status`="'.$taskstatus.'", `priority`="'.$taskpriority.'", `comments`="'.$taskcomments.'", `task`="'.$tasktask.'" WHERE `id`="'.$ayd.'" LIMIT 1;');
Header('Location:index.php');
поидее должна обновлятся инфа в елементе с айдишником - $ayd, но у меня почему то создается еще один в котором первые три параметра равны нулю а остальные из формы которую заполнял, что не так подскажите плиз...
Всмысле ... ?Он Сделает UPDATE а потом обнулиться.. ..?Если даже ты ничо незаполнил всё равно будет UPDATY)))
Всмысле ... ?Он Сделает UPDATE а потом обнулиться.. ..?Если даже ты ничо незаполнил всё равно будет UPDATY)))
да я уже разобрался, там косяк был, не на тот скрипт вел action
как правильно создать таблицу в MySQL, чтоб после удаления какой либо запись ключ начинался с 1,
и каждая новая запись добавлялась в конце таблицы?
groundhog
27.05.2008, 23:21
Почитай принципы организации реляционных баз данных, труды Кодда из темы "A Relational Model of Data for Large Shared Data Banks" и тогда ты поймёшь какую чушь ты спрашиваешь... Кодд в гробу уже несколько раз, наверное, перевернулся... Ознакомься с 12 правилами Кодда:
http://ru.wikipedia.org/wiki/12_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB_%D0%9A%D0% BE%D0%B4%D0%B4%D0%B0
А так - если тебе в лом читать всё это, могу сказать, что такое невозможно сделать, ибо это как минимум приведёт к нарушению логической целостности базы данных.
$ayd = $_POST['id'];
$ayduser = $_POST['id_user'];
$taskname = $_POST['name'];
$taskstatus = $_POST['status'];
$taskpriority = $_POST['priority'];
$taskcomments = $_POST['comments'];
$tasktask = $_POST['task'];
mysql_query('UPDATE `tasks` SET `id_user`="'.$ayduser.'", `name`="'.$taskname.'", `status`="'.$taskstatus.'", `priority`="'.$taskpriority.'", `comments`="'.$taskcomments.'", `task`="'.$tasktask.'" WHERE `id`="'.$ayd.'" LIMIT 1;');
Header('Location:index.php');
Оффтоп:
Твой скрипт уязвим к SQL Injection. Стоит данные фильтровать при запросе к бд.
как правильно создать таблицу в MySQL, чтоб после удаления какой либо запись ключ начинался с 1,
и каждая новая запись добавлялась в конце таблицы?
О боги... что за покаление, что за мозгожрущий сверхмаразм... Почему каждый своим долгом счтает спросить это?)
Нынче принято проектировать и работать с БД, не зная элементарных вещей... =\
А по теме пример: допустим у тебя есть две таблицы:
работники и отделы. В таблице работники идет внешний ключ на первичный синтетический ключ (тот, который ты хочешь менять) таблицы отделы. И вот представь: что то ты там намутил в своей базе, у тебя в таблице отделы начинают значения первичного ключа меняться... а со связанными таблицами что делать то? Перелопачивать все? Если база большая - а это практически всегда - это никому не нужное дело и титанческие нагрузки на серв... Спрашивается - а нафига это делать, когда все будет работать, если мы просто-напросто ничего не будем трогать?
А вообще причина конечно же кроется не только в этом, но это я привел для примера - что бы тебе хоть немного стало ясно.
Buffalon
31.05.2008, 14:04
Здрасте... .Мне php_bug_scaner что у миня подозрение на ошибку в
mysql_query("INSERT INTO `user_ip`( `user_id` , `user_name` , `user_ip` ) VALUES ('". $user_id ."', '". $user_name ."', '". $user_ip ."')")
И вообще вывел мне все mysql_query
Я всё правильно сделал?Или она просто выдаёт возможные ошибки?
Здрасте... .Мне php_bug_scaner что у миня подозрение на ошибку в
mysql_query("INSERT INTO `user_ip`( `user_id` , `user_name` , `user_ip` ) VALUES ('". $user_id ."', '". $user_name ."', '". $user_ip ."')")
И вообще вывел мне все mysql_query
Я всё правильно сделал?Или она просто выдаёт возможные ошибки?
вроде все верно, единственно у меня в таком коде в конце в самом );'); , двоеточие между двумя скобками, может в этом дело....
PS php_bug_scaner это что?
как можно прочитать бинарные логи?
Здрасте... .Мне php_bug_scaner что у миня подозрение на ошибку в
mysql_query("INSERT INTO `user_ip`( `user_id` , `user_name` , `user_ip` ) VALUES ('". $user_id ."', '". $user_name ."', '". $user_ip ."')")
И вообще вывел мне все mysql_query
Я всё правильно сделал?Или она просто выдаёт возможные ошибки?
ну тут может ругатся на то что если $user_id, $user_name, $user_ip вставляются без проверок, если например user_name будет равен '(select version()),1)/* то это будет просто скуля в инсерте.
Buffalon
02.06.2008, 17:09
ну тут может ругатся на то что если $user_id, $user_name, $user_ip вставляются без проверок, если например user_name будет равен '(select version()),1)/* то это будет просто скуля в инсерте.
О0о... .спс те).. .Всё равно всё проверяется)
как можно прочитать бинарные логи?
http://dev.mysql.com/doc/refman/4.1/en/mysqlbinlog.html
Freakazoitt
03.06.2008, 10:08
Сайту нужны еще две базы данных (там только одну дают)
Как можно устроить подключение других баз данных?
Предоставляют ли бесплатно их где-нибудь для этих целей?
groundhog
03.06.2008, 10:35
А все табы хранить в одной, используя другие префиксы таблиц?
SUBJECT617
08.06.2008, 22:46
А как возможно сделать дамп например выданного по такому запросу:
SELECT email,bla-bla FROM members
WHERE email like '%yandex.ru' ?
Доки читал но чет невтыкается =/
В каком смысле дамп? объясни получше
SUBJECT617 делай dump всей таблицы members, а там уже заберешь майлы с доменом yandex.ru
SUBJECT617
08.06.2008, 23:43
2 mmf Я вообще так и делал, просто надеялся что можно полегче...
2 mobile Ой.. Нето разве? Дамп - не копия БД?
А как возможно сделать дамп например выданного по такому запросу:
SELECT email,bla-bla FROM members
WHERE email like '%yandex.ru' ?
Доки читал но чет невтыкается =/
ну по идеи этот запрос выберет из столбца email все мыла с доменом yandex, только их нужно как то представить протом на php
А как возможно сделать дамп например выданного по такому запросу:
SELECT email,bla-bla FROM members
WHERE email like '%yandex.ru' ?
Доки читал но чет невтыкается =/
Слей все нужные результаты в новую таблицу (благо синтаксис позволяет), и задампь ее.
INSERT INTO new_table SELECT email,bla-bla
FROM members
WHERE email like '%yandex.ru'
Естественно new_table должна иметь структуру, соотв. подзапросу и типы данных должны быть идентичны (ну или совместны).
Еще один способ вывода результата запроса в файл
SELECT email,bla-bla FROM members
WHERE email like '%yandex.ru'
INTO OUTFILE '/полный/путь/к/файлу.txt'
Еще один способ вывода результата запроса в файл
SELECT email,bla-bla FROM members
WHERE email like '%yandex.ru'
INTO OUTFILE '/полный/путь/к/файлу.txt'
Угу, и кому такой ббэкап нужен? Он же наверное в последствии восстановить его хочет, а не просто почитать... А для восттановления это все дело прийдется распарсивать =\ А при большом объеме это ох как напряжно :)
SUBJECT617
09.06.2008, 15:48
Ага... В итоге все можно перекинуть руками в Exel, но для 3к+ БД будет напряжно. Да и все хэши сбручивать надо...
Ага... В итоге все можно перекинуть руками в Exel, но для 3к+ БД будет напряжно. Да и все хэши сбручивать надо...
По моему предложенный мною вариант, с новой таблицей, самый подходящий в твоем случае.
groundhog
09.06.2008, 16:01
Мужики, харош фигню нести! Тип явно написал, что хочет сохранить результат выполнения селекта. Криптор дал исчерпывающий ответ. Всё тема закрыта.
Скачайте ISPsystem, разберите , там есть нужное вам :)
Подскажите, как на php получить id только что добавленной строчки в базу MySQL?
Спасибо!
Подскажите, как на php получить id только что добавленной строчки в базу MySQL?
Спасибо!
$var = mysql_query("SELECT id FROM test.coments ORDER BY 1 DESC LIMIT 0,1");
echo mysql_result($var, 0);
$var = mysql_query("SELECT id FROM test.coments ORDER BY 1 DESC LIMIT 0,1");
echo mysql_result($var, 0);
echo mysql_insert_id();
Спасибо Гуры :) Завтра по + с меня!
Почему не может выполнить запрос ?
Проблема в верс ? у меня 4 верс
------------------------------------------------------------------------------
-- Installtion for Saga Login Database--
DROP TABLE IF EXISTS `login`;
CREATE TABLE `login` (
`account_id` int(10) NOT NULL auto_increment,
`username` varchar(25) collate utf8_unicode_ci NOT NULL default '',
`password` varchar(50) collate utf8_unicode_ci NOT NULL default '',
`sex` tinyint(3) unsigned NOT NULL default '1',
`lastlogin` varchar(25) collate utf8_unicode_ci NOT NULL default '',
`Banned` tinyint(3) NOT NULL default '0',
PRIMARY KEY (`account_id`),
KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Procedures
--
DELIMITER $$
--
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginAddUser`(
name varchar(25),
pass varchar(50),
gender tinyint(3),
last varchar(25))
BEGIN
INSERT INTO `login` (`username`,`password`,`sex`,`lastlogin`) VALUES (name,pass,gender,last);
END$$
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginGetAccountId`(name varchar(20))
BEGIN
SELECT `account_id` FROM `login` WHERE `username`=name;
END$$
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginGetUser`(name varchar(20))
BEGIN
SELECT * FROM `login` WHERE `username`=name LIMIT 1;
END$$
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginUpdateUser`(
name varchar(25),
pass varchar(50),
gender tinyint(3),
last varchar(25))
BEGIN
UPDATE `login` SET `password`=pass, `sex`=gender, `lastlogin`=last WHERE `username`=name;
END$$
--
DELIMITER ;
--
--------------------------------------------------------------------------
DTW, а выполняешь запрос хоть на InnoDB?
Да InnoDB
Он с этим не хочет че дружить
DELIMITER $$
--
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginAddUser`(
name varchar(25),
pass varchar(50),
gender tinyint(3),
last varchar(25))
BEGIN
INSERT INTO `login` (`username`,`password`,`sex`,`lastlogin`) VALUES (name,pass,gender,last);
END$$
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginGetAccountId`(name varchar(20))
BEGIN
SELECT `account_id` FROM `login` WHERE `username`=name;
END$$
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginGetUser`(name varchar(20))
BEGIN
SELECT * FROM `login` WHERE `username`=name LIMIT 1;
END$$
CREATE DEFINER=`saga`@`localhost` PROCEDURE `sagaLoginUpdateUser`(
name varchar(25),
pass varchar(50),
gender tinyint(3),
last varchar(25))
BEGIN
UPDATE `login` SET `password`=pass, `sex`=gender, `lastlogin`=last WHERE `username`=name;
END$$
--
DELIMITER ;
--
Думаю проблема вер сервера у меня 4.1 а надо 5
Dtw Мускул стал держать хранимые процедуры начиная с версии 5.0... а стабильно и того позже. Думаю дело в этом)
Nickotin
15.06.2008, 17:35
Кстати да,солидарен.
Впринципе все легко - одно НО.
По данной структуре не пойму (хотя особо не думал) вот это:
7.Вывести предметы, читающиеся хотя бы в двух семестрах.
Т.е. в таблице м.б. нсколько одноименных предметов с разными идентификаторами? Другого варианта не вижу
Структура таблиц
CREATE TABLE `Lecturers` (
`id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`fio` VARCHAR( 100 ) NOT NULL ,
`rank` VARCHAR( 40 ) NOT NULL ,
`post` VARCHAR( 40 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
CREATE TABLE `disciplines` (
`id` int(5) unsigned NOT NULL auto_increment,
`title` varchar(70) NOT NULL,
`semestr` int(2) NOT NULL,
`form` enum('exam','setoff','other') NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `schedule` (
`id_lector` int(5) UNSIGNED NOT NULL,
`id_discipline` int(5) UNSIGNED NOT NULL,
`weekday` enum('Понедельник','Вторник','С реда','Четверг','Пятница','Су бота','Воскресенье') NOT NULL,
PRIMARY KEY (`id_lector`,`id_discipline`),
FOREIGN KEY (`id_lector`) REFERENCES `lecturers`(`id`),
FOREIGN KEY (`id_discipline`) REFERENCES `disciplines`(`id`)
);
Если что не нравится - можешь поменять :)
Вот собственно сами запросы:
1) SELECT * FROM `lecturers` WHERE `rank`='Кандидат Наук'
----------------------
2)SELECT DISTINCT `fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `d`.`form`='exam' AND (`id_lector`,`semestr`) <> ALL(
SELECT `id_lector`,`semestr`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
WHERE `d`.`form`<>'exam'
)
----------------------
3) SELECT DISTINCT `fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `d`.`form`='setoff'
----------------------
4) SELECT * FROM lecturers`
----------------------
5) SELECT DISTINCT `l`.`fio`
FROM `lecturers` as `l`
JOIN `schedule` as `sc` on `l`.`id`=`sc`.`id_lector`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
WHERE `l`.`id` <> ALL(
SELECT `l`.`id`
FROM `lecturers` as `l`
JOIN `schedule` as `sc` on `l`.`id`=`sc`.`id_lector`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
WHERE `d`.`semestr` NOT IN (3,4))
----------------------
6) SELECT `fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `l`.`rank` = 'Кандидат Наук' AND (`d`.`semestr`=7 OR `d`.`semestr`=8)
----------------------
7) SELECT `title`
FROM `disciplines`
GROUP BY `title`
HAVING count(DISTINCT `semestr`)>1
----------------------
8) SELECT `l`.`fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `l`.`rank`='Доцент'
GROUP BY `l`.`id`
HAVING count(DISTINCT `d`.`title`)=3
----------------------
9) SELECT `l`.`fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `l`.`rank`='Доктор Наук' AND `d`.`form`='exam' AND (`d`.`semestr`=9 OR `d`.`semestr`=10)
Сильно не тестил - если что бут не так - то стучись, помогу.
Помогите такая проблема
что при таком запросе он достает многа одинаковых фотах
в чем может быть ошибка ?
SELECT jos_vm_product.product_thumb_image FROM jos_vm_product,jos_vm_product_category_xref where category_id
Мне надо выбрать с Бд таблицы
jos_vm_product,jos_vm_product_category_xref
Это таблицы компонент джумлы virtuemart..
как бы запросом достаю все фото на продукт ток он их че выводи 5 раз одно фото однаково
$query="SELECT jos_vm_product.product_thumb_image FROM jos_vm_product,jos_vm_product_category_xref where category_id=$id ";
return $res2 = mysql_query($query);
приложение ......
http://i079.radikal.ru/0806/d7/6822546ea2b9.jpg
Что бы не
че выводи 5 раз одно фото однаково,
а всяко-разно
обьясни какие именно поля нужно выбирать, и из каких таблиц И ПО КАКОМУ УСЛОВИЮ
Данный запрос выбирает поле product_thumb_image из таблицы jos_vm_product
по неизвестно какому условию, возможно правильно "WHERE jos_vm_product.category_id="
или так
$query="
SELECT product_thumb_image
FROM jos_vm_product
WHERE category_id IN(
SELECT id
FROM jos_vm_product_category_xref
WHERE ...
)";
Какие поля в jos_vm_product_category_xref ?
Поля такие
category_id product_id product_list
123 99 NULL
таблице jos_vm_product .поле product_thumb_image
нет category_id а есть product_id
Попробуй так
$query="
SELECT product_thumb_image
FROM jos_vm_product
WHERE product_id IN(
SELECT product_id
FROM jos_vm_product_category_xref
WHERE category_id = $id
)";
Должно работать
пс И не забывай фильтровать $id, хотя бы так
$id = (int)$id;
Спс огромное все работает
Спс огромное все работает
да не за что :)
И не забывай фильтровать $id, хотя бы так $id = (int)$id; или прямой вставкой (int)$id
Все поля выбирает этот запрос
а получить че их не могу
SELECT * FROM jos_vm_category ,jos_vm_category_xref
WHERE jos_vm_category.category_id
AND jos_vm_category_xref.category_child_id=jos_vm_cate gory.category_id;
поле получить не могу category_name
http://i062.radikal.ru/0806/80/24d261ae508et.jpg (http://radikal.ru/F/i062.radikal.ru/0806/80/24d261ae508e.jpg.html)
Попробуй так, если тебе нужно только category_name
SELECT a.category_name FROM jos_vm_category as a, jos_vm_category_xref as b
WHERE a.category_id = b.category_child_id
А вообще почитай о функциях
mysql_fetch_row()
mysql_fetch_array()
mysql_fetch_object()
Не подходит
он выводит все категории
мне надо чтоб поле category_name было выведено по знач category_child_id
надо получить category_name. category_id
Таблице jos_vm_category_xref
category_parent_id category_child_id category_list
Таблице Таблица : jos_vm_category
category_id vendor_id category_name category_description --тк дл
пропиши отдельно
WHERE jos_vm_category.category_id=jos_vm_cate gory.category_id AND jos_vm_category_xref.category_child_id=jos_vm_cate gory.category_id;
не "перовое" и "второе" равно "третьему",
а "первое" равно "третьему" и "второе" равно "третьему"
Не помогает все равно выводит парент ид
мне надо ток чилд иди
.................................................. ................................................
Таблица : jos_vm_category_xref
поля category_parent_id category_child_id category_list
.................................................. ...........................................
category_id vendor_id category_name
.................................................. ..........................................
.
SELECT category_name, category_id
FROM jos_vm_category
WHERE category_id
IN (
SELECT category_parent_id
FROM jos_vm_category_xref
WHERE category_parent_id
)
Это запрос все работает правельно
при построение структура така
CREATE TABLE IF NOT EXISTS `jos_vm_category` (
`category_id` int(11) NOT NULL auto_increment,
`vendor_id` int(11) NOT NULL default '0',
`category_name` varchar(128) NOT NULL default '',
`category_description` text,
`category_thumb_image` varchar(255) default NULL,
`category_full_image` varchar(255) default NULL,
`category_publish` char(1) default NULL,
`cdate` int(11) default NULL,
`mdate` int(11) default NULL,
`category_browsepage` varchar(255) NOT NULL default 'browse_1',
`products_per_row` tinyint(2) NOT NULL default '1',
`category_flypage` varchar(255) default NULL,
`list_order` int(11) default NULL,
PRIMARY KEY (`category_id`),
KEY `idx_category_vendor_id` (`vendor_id`),
KEY `idx_category_name` (`category_name`)
) TYPE=MyISAM COMMENT='Product Categories are stored here';
CREATE TABLE IF NOT EXISTS `jos_vm_category_xref` (
`category_parent_id` int(11) NOT NULL default '0',
`category_child_id` int(11) NOT NULL default '0',
`category_list` int(11) default NULL,
KEY `category_xref_category_parent_id` (`category_parent_id`),
KEY `category_xref_category_child_id` (`category_child_id`),
KEY `idx_category_xref_category_list` (`category_list`)
) TYPE=MyISAM COMMENT='Category child-parent relation list';
Как мне добраться Суб меню (category_child_id)?
Допустим есть 2 таблицы с такими полями
1: user_id | name
2: id | user_id | news_id
Вопрос:
Можно ли одним запросом вставить данные из первой таблица во второю, что бы tbl1.user_id попал в tbl2. user_id, а tbl2.news_id было постоянным числом, мною заданным ?
Пример
tb1:
user_id | name
45 | name1
46 | name2
47 | name3
tb2: - допустим пустая, после запроса должна выглядеть так:
id | user_id | news_id
1 | 45 | "значение"
2 | 46 | "значение"
3 | 47 | "значение"
где "значение" - число, которое я укажу
блин вроде все просто... но что-то я втыкаю :)
geezer.code
02.07.2008, 18:21
читай мануал по "select into"
читай мануал по "select into"
гениальный ответ, так можно и на все вопросы отвечать
geezer.code
02.07.2008, 18:29
гениальный ответ, так можно и на все вопросы отвечать
мля ступил ... тебе надо в уже существующую таблу.
тогда так.
insert into tb2( user_id, news_id) values (select user_id, 'значение' from tb1)
вроде так.
insert into tb2( user_id, news_id) values (select user_id from tb1)
Так нельзя, я тоже так хотел
нужно , что-то типа
SELECT id INTO edu_newsletter_user.user_id FROM edu_user;
geezer.code
02.07.2008, 18:39
Так нельзя
подзапрос select user_id from tb1 - возвращает все значение(не одно), а при таком запросе
подзапрос должен возвращть одно
уху сам пошел почитал маны values писать не надо
insert into tb2( user_id, news_id) (select user_id, 'значение' from tb1)
значение - это постоянное число, береться не из базы
В том, то и проблема
ща попробую
SELECT id INTO edu_newsletter_user.user_id FROM edu_user;
geezer.code
02.07.2008, 18:48
отстранимся от случая и подумаем.
если нужно выбрать постоянное число 5
будет запрос
select 5;
если надо назвать столбец по другому
будет select 5 as columnname;
вернемся к нашему случаю
insert into tb2(user_id, news_id) (select user_id, 5 as news_id from tb1);
отстранимся от случая и подумаем.
если нужно выбрать постоянное число 5
будет запрос
select 5;
блин точно...
Ответ
insert into tb2(user_id, news_id) (select user_id, 5 from tb1);
geezer.code, спасибо!
В продолжении темы:
Нужен, подзапрос типа:
SELECT *, "значение из другой таблицы, на основе текущего id"
FROM `edu_user`
Поясняю
Нужно выбрать все поля из таблицы edu_user (все записи), + значение `newsletter_id` из таблицы edu_newsletter_user, где edu_user.id = edu_newsletter_user.user_id
т.е резвлт должен быть например таким
id - 5
name - login
newsletter - 56(это значение взято из таблицы edu_newsletter_user)
Что бы было более ясно, вот неправильный запрос, но по нему можно понять, что нужно выбрать
SELECT *, `newsletter_id` AS ( SELECT `newsletter_id` FROM edu_newsletter_user WHERE user_id = 'текущий id' )
FROM `edu_user`
geezer.code
02.07.2008, 21:39
В продолжении темы:
Нужно выбрать все поля из таблицы edu_user (все записи), + значение `newsletter_id` из таблицы edu_newsletter_user, где edu_user.id = edu_newsletter_user.user_id
select id,name,newsletter from edu_user, edu_newsletter_user where edu_user.id = edu_newsletter_user.user_id;
select id,name,newsletter from edu_user, edu_newsletter_user where edu_user.id = edu_newsletter_user.user_id;
Нам нужно выбрать не юзера у которого
edu_user.id = edu_newsletter_user.user_id
А всех юзеров со всеми полями + значение из другой таблицы...
пример
edu_user:
id | name |
45 | name1
46 | name2
47 | name3
edu_newsletter_user:
id | user_id |newsletter_value
75 | 45 | 1
76 | 46 | 2
77 | 47 | 3
Результат выбора:
id - 45
name - name1
newsletter_value - 1 (взято из таблицы edu_newsletter_user, по user_id)
id - 46
name - name2
newsletter_value - 2 (взято из таблицы edu_newsletter_user, по user_id)
id - 47
name - name2
newsletter_value - 3 (взято из таблицы edu_newsletter_user, по user_id)
select edu_user.id,edu_user.name,edu_newsletter_user.news letter_value from edu_user inner join edu_newsletter_user on edu_user.id=edu_newsletter_user.user_id
попробуй так
Scipio
попробуй так
Спасибо, этот метод подходит
пс
Уже месяца 4 обешаю разобраться с объеденением таблиц :)
На выходных буду читать !!!
пс
Уже месяца 4 обешаю разобраться с объеденением таблиц :)
На выходных буду читать !!!
В статьях посмотри - я недавно статью на эту тему писал... с понятными примерами.
В статьях посмотри - я недавно статью на эту тему писал... с понятными примерами.
Обязательно! чем больше источников - тем лучше
спасибо
Я скачал базу данных на mysql и установил на свой, домашний компьютер. База ipb форума.
Я выяснил, что при восстановлении база данных, происходит кракозябра. Восстановление происходит успешно, но русские буквы преобразовываются.
Что нужно подправить в ASP Linux 11.2, чтобы база данных успешно импотировалась, без всякизх кракозябр?
Стандартная кодировка в mysql
default-character-set latin1
Как ее можно изменить?
незнаю правильно ли я тебя понял, просто попробуй в самом начале дампа напиши:
set names нужная кодировка
Я это пробовал. Не получилось.
Я хочу поменять кодировку latin1, которая по умолчанию в Linux на cp1251
База весит 600 мегабайт, извините, никакого желания восстанавливать в 4 раз у меня желания нет :)
ндя...
ну тогда когда появится желание попробуй сделать так:
найди файленг my.cnf
в секцию [client] допиши или измени:
default-character-set = cp1251
character-sets-dir = здесь полный путь к кодировкам
на денвере это так:
[client]
port = 3306
socket = /tmp/mysql5.sock
default-character-set = cp1251
character-sets-dir = /usr/local/mysql5/share/charsets
потом в секции [mysqld] допиши или исправь:
default-character-set = cp1251
init-connect = "set names cp1251"
в секции [mysql] допиши или исправь:
default-character-set=cp1251
надеюсь поможет
Я сделал, как вы наисали. Сейчас восстанавливаю базу снова.
Через rst.php видно, что кодировка встала нормальная. Логический предполагаю, что через браузер тоже все корректно отображается.
Спасибо :)
Допустим есть таблица
user:
id | name
56 | name1
57 | name2
58 | name3
и user_news
id | user_id | news_id
1 | 57 | 4
3 | 57 | 5
4 | 58 | 1
и установленна переменная
$news_id = 4;
Нужно выбрать все строки в user, что бы результат был таким
id - 56
name - name1
in_news - 0
id - 57
name - name1
in_news - 1
id - 58
name - name1
in_news - 0
Где in_news - береться из таблицы user_news ( оно равно 1, если в таблице есть запись с user_id равное user.id, и запись news_id = $news_id ( в нашем случае 4)
in_news - может называться по-другому, мне все равно...
мы можем просто при проверки проверять наличие in_news
Как сделать из двух запросов один запрос
сделать в одном запросе
SELECT product_thumb_image , product_sku
FROM jos_vm_product
WHERE product_id IN(
SELECT product_id
FROM jos_vm_product_category_xref
WHERE category_id )
и
SELECT product_price
FROM jos_vm_product_price
WHERE product_id IN(
SELECT product_id
FROM jos_vm_product_category_xref
WHERE category_id )
Как должен выглядить запрос нескольких функций Sum из нескольких таблиц (по одной функции Sum из каждой таблицы)?
короче у меня проблема....
с сайта исчезла статья...я в бд нашел ее...но не могу восстоновить..как это можно сделать? помогите пожауйста....
-=Static=-
10.07.2008, 03:51
ch']короче у меня проблема....
с сайта исчезла статья...я в бд нашел ее...но не могу восстоновить..как это можно сделать? помогите пожауйста....
Вариантов много. Смотря что произошло, в результате чего она перестала выводиться... Какой движок? Есть ли понятие активна/неактивна??
Вариантов много. Смотря что произошло, в результате чего она перестала выводиться... Какой движок? Есть ли понятие активна/неактивна??
сайт написан в ручную умелыми руками =) исчез по непонятным причинам....активн\неактив это где и к чему относится? если в инете есть статья по этому вопросу,дайте ссылку,а то гугл ничо не дал мне...
или если есть хорошие ребята,напиши в аську объясните что да как,буду очень благодарен )
>> если в инете есть статья по этому вопросу,дайте ссылку,а то гугл ничо не дал мне...
Ога, статья по исчезновению статей. Мб структуру бд опишешь? Приведёшь код выборки статей? Или мы должны так угадать что не так?
>> если в инете есть статья по этому вопросу,дайте ссылку,а то гугл ничо не дал мне...
Ога, статья по исчезновению статей. Мб структуру бд опишешь? Приведёшь код выборки статей? Или мы должны так угадать что не так?
скажи че откуда взять я тебе дам ))) я не понимаю его ты хочешь )))
Омфнг.
1. Дай исходный код того скрипта который выдаёт статьи. Никуда не заливай, просто в тег
2. Напиши название таблицы с новостями, название колонок в таблице.
Омфнг.
1. Дай исходный код того скрипта который выдаёт статьи. Никуда не заливай, просто в тег
2. Напиши название таблицы с новостями, название колонок в таблице.
тот вопрос уладил уже ))) понял че да как...
у меня опять проблема...
при создании таблицы выводит ошибку
#1068 - Multiple primary key defined
вот запрос
SQL-запрос: CREATE TABLE `wwwpgnorhayerru`.`ribbon_art` ( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `add_datetime` DATETIME NULL DEFAULT NULL , `title` VARCHAR( 255 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `mini_content` TINYTEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `content` TEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `images` TEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `comments` ENUM( 'on', 'off' ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT 'off', `sid` INT( 11 ) NULL DEFAULT '0', PRIMARY KEY ( `add_datetime` , `title` , `mini_content` , `comments` ) , FULLTEXT ( `title` , `mini_content` , `content` , `images` ) ) ENGINE = MYISAM CHARACTER SET cp1251 COLLATE cp1251_general_ci Ответ MySQL: #1068 - Multiple primary key defined
Lesnoy_chelovek
12.07.2008, 09:38
ch[@]ch, почитай по оформлению кода и синтаксис.
CREATE TABLE `wwwpgnorhayerru`.`ribbon_art`
( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`add_datetime` DATETIME NULL DEFAULT NULL ,
`title` VARCHAR( 255 ) NULL DEFAULT NULL ,
`mini_content` TINYTEXT NULL DEFAULT NULL ,
`content` TEXT NULL DEFAULT NULL ,
`images` TEXT NULL DEFAULT NULL ,
`comments` ENUM( 'on', 'off' ) NULL DEFAULT 'off',
`sid` INT( 11 ) NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `add_datetime` (`add_datetime` ),
KEY `title` (`title`),
KEY `mini_content` (`mini_content`),
KEY `comments` (`comments`)
)
ENGINE = MYISAM CHARACTER=cp1251
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
...
PRIMARY KEY (`id`),
К чему объявление первичного ключа дважды?
DaemonicSoul
16.07.2008, 12:40
Такой вопрос: Имеется таблица, в ней несколько полей. Первое поле имеет значения Фамилия И.О.
Поле name:
Иванов И.И.
Петров О.О
Петров Л.П.
Как выделить из этой таблицы всех людей с фамилией Петров?
SELECT * FROM table WHERE name='Петров /*а тут какая - либо фича, что И.О. могут быть любыми*/'. Оо
Как сделать
Такой вопрос: Имеется таблица, в ней несколько полей. Первое поле имеет значения Фамилия И.О.
Поле name:
Иванов И.И.
Петров О.О
Петров Л.П.
Как выделить из этой таблицы всех людей с фамилией Петров?
SELECT * FROM table WHERE name='Петров /*а тут какая - либо фича, что И.О. могут быть любыми*/'. Оо
Как сделать
SELECT * FROM table WHERE name like '%Петров'
Более правильно
SELECT * FROM table WHERE name like '%Петров%'
guest3297
16.07.2008, 17:14
Короче надо следущее
mysql 4.1
1) есть колонка с годом надо что бы год был > 2008 (year)
2) есть int колонка надо что бы она не была пустая (col1)
3) есть int колонка надо что бы все значения которые начинаются на 6 не селектились (col2).
Допустим так
SELECT * FROM `tbl` where `year` > 2008 AND `col1` IS NOT NULL AND col2 ....
Вот тут зарутрудняюсь и как делать правильно IS NOT?
Спасибо.
SELECT * FROM `tbl` where
`year` > 2008 AND
`col1` IS NOT NULL AND
`col2` NOT LIKE '6%'
Если в поле col1 содержатся записи, содержажие 0, то они попадут в результат запроса. Указанный запрос сработает только для NULL-записей. Если не нужны ни NULL, ни 0, то сделать, как указал Nomer1
...`col1` != ''...
или
...`col1` != 0...
ЗЫ. Несмотря на то, что col2 - целочисленное, NOT LIKE для него сработает в мускуле корректно.
можно ли сделать дамп бд с хоста на который пробиться не могу, зная хост-пасс-пользователя-имя бд?
m0nsieur
18.07.2008, 09:39
Если удаленно сможешь подсоединиться к БД и через консоль сделать дамп.
ch']тот вопрос уладил уже ))) понял че да как...
у меня опять проблема...
при создании таблицы выводит ошибку
#1068 - Multiple primary key defined
вот запрос
SQL-запрос: CREATE TABLE `wwwpgnorhayerru`.`ribbon_art` ( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `add_datetime` DATETIME NULL DEFAULT NULL , `title` VARCHAR( 255 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `mini_content` TINYTEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `content` TEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `images` TEXT CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT NULL , `comments` ENUM( 'on', 'off' ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL DEFAULT 'off', `sid` INT( 11 ) NULL DEFAULT '0', PRIMARY KEY ( `add_datetime` , `title` , `mini_content` , `comments` ) , FULLTEXT ( `title` , `mini_content` , `content` , `images` ) ) ENGINE = MYISAM CHARACTER SET cp1251 COLLATE cp1251_general_ci Ответ MySQL: #1068 - Multiple primary key defined
Примари объявлен два раза - чего быть не может. Если же ты хочешь сделать составной, то убери локальные описания первичного ключа, и напиши
PRIMARY KEY (`field1`,`field2`...)
Т.е. те поля через запятую, которые должны участвовать в составном ключе.
Более правильно
SELECT * FROM table WHERE name like '%Петров%'
Тогда уж
like 'Петров %'
1) Ибо вдруг секретарша или кто то забил не инициалы ,а полностью? Тогда тебе и Петровичей выведет, и еще всякую нечисть)
2) И думаю необходим пробел как разделитель, ибо Петровенко и еще кто нить быть могут :)
Помогоите plz с запросом в mysql5.
Есть 2 сайта mysite и old.mysite. Обои два на DataLife.
Задача - перенести все посты(хотябы только их) со старого(old.mysite) на новый(mysite), заменив при этом все id сообщений в старой базе (там идёт 4-280) так, что бы id начинались с 316 и автоматом проставились +1 до последнего.
Пока запрос составить не получается :(
SELECT jos_vm_product.product_thumb_image , jos_vm_product.product_sku ,
jos_vm_product.product_sku ,
jos_vm_product_category_xref.product_id, jos_vm_product_category_xref.category_id
,jos_vm_product_price.product_price,jos_vm_product _price.product_price_id ,
jos_vm_category.category_name
FROM jos_vm_product,jos_vm_product_category_xref,jos_vm _product_price,
jos_vm_category
WHERE jos_vm_product.product_id=jos_vm_product_category_ xref.product_id and
jos_vm_product_price.product_id=jos_vm_product_cat egory_xref.product_id
and jos_vm_category.category_id= jos_vm_product_category_xref.category_id
and jos_vm_product_category_xref.category_id
При помощи этого запроса можна получить файл
с описанием
ATV 220||2754.05||http://text/index.php?page=shop.product_details&flypage=shop.flypage&product_id=30&category_id=125||9bb245c8c8c4f64f801b4182839279bd. jpg||kvadracikli
Как выдернуть из БД парент категорию
что было так || Moto||kvadracikli
таблица имеет такие поля
category_parent_id , category_child_id ,category_list
FIND_ERROR
20.07.2008, 09:59
в old.site
$table='таблица с пользователями';
for ($i < $z)
{
mysql_query ("SELECT * FROM $table WHERE index_id=$i");
$n=$i+316;
mysql_query ("UPDATE $table SET id=$n WHERE id=$i");
}
это должно увеличить все id на 316
а дальше переносим все записи из старой таблицы в новую...
в old.site
$table='таблица с пользователями';
for ($i < $z)
{
mysql_query ("SELECT * FROM $table WHERE index_id=$i");
$n=$i+316;
mysql_query ("UPDATE $table SET id=$n WHERE id=$i");
}
это должно увеличить все id на 316
а дальше переносим все записи из старой таблицы в новую...
Пробовал по всякому, но:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '($i < $z)
{
А почему таблица пользователей, ведь менять надо id постов?
Так получаю цену
SELECT
jos_vm_product_price.product_price
FROM jos_vm_product,jos_vm_product_category_xref,jos_vm _product_price
WHERE
jos_vm_product_price.product_id=jos_vm_product_cat egory_xref.product_id
and jos_vm_product_category_xref.category_id=124
limit 15
вопрос как сделать UPDATE jos_vm_product_price.product_price
не как не получается ..
если делаю так
UPDATE jos_vm_product_price set jos_vm_product_price.product_price
WHERE
jos_vm_product_price.product_id=jos_vm_product_cat egory_xref.product_id
and jos_vm_product_category_xref.category_id=124
То он пишет что неизвестна таблица
jos_vm_product_category_xref
решение такое
UPDATE jos_vm_product_price, jos_vm_product_category_xref set jos_vm_product_price.product_price=10
WHERE
jos_vm_product_price.product_id=jos_vm_product_cat egory_xref.product_id
and jos_vm_product_category_xref.category_id=124
Спс за помощь @Egorich
FIND_ERROR
20.07.2008, 20:14
Onix
сори ет просто скрипт которым я сменил у юзерей одного форума ID на рандом ) таблица та в котоой надо сменить id
предворительно надо установить конект с базой данных
($i < $z) замени на ($i > $z)
$i задать значенние = максимального поста
$z задать значение 1
<?php
$host='localhost';
$login='root';
$pass='';
$conect_link = mysql_connect($host, $login, $pass);
mysql_connect($host, $login, $pass);
mysql_select_db ('старая база');
$i=1234;
$z=1;
$table='таблица с пользователями';
for ($i > $z)
{
mysql_query ("SELECT * FROM $table WHERE index_id=$i");
$n=$i+316;
mysql_query ("UPDATE $table SET id=$n WHERE id=$i");
$i=$i-1;
}
?>
результат тот же:
Parse error: syntax error, unexpected ')', expecting ';' in /home/cstrike.net/old/temp.php on line 11
line 11 - for ($i > $z);
FIND_ERROR, ты откуда копипастил? Пиздец=\
Или лыжи не едут или я ебанутый (с)
Расскажешь что за хакерский код?
$conect_link = mysql_connect($host, $login, $pass);
mysql_connect($host, $login, $pass);
Насколько я полнял смысл скрипта то нужен while а не for =\ Кстате, тебе никто не рассказывал о таких штуках как инкремент/декремент?
$i=$i-1;
=\\
Если уж так хочется скриптом, то вот:
<?php
mysql_connect('host', 'user', 'pass');
$id = 316, $z = 4;
while ($z <= 280)
{
mysql_query ("UPDATE таблица SET id=$id WHERE id=$z");
$id++, $z++;
}
?>
Не проверял, негде ибо. Попробуй, напиши потом.
FIND_ERROR
Это че за ужас в пхп-кодинге? Как насчет mysql_fetch_array и while?
FIND_ERROR
21.07.2008, 14:03
намудрил согласен, а в данном случее не правильнм ли будет использовать инкримент?
так как если в таблице больше 316 записей первая же опирация попытаеться создать дублирушиеся Id, разумнее будет делать обновление с конца... или я опять неправ :( ?
Parse error: syntax error, unexpected ',' in /home/cstrike.net/old/temp.php on line 3
line 3 - $id = 316, $z = 4;
Оникс, ну замени запятую на точку с запятой
Оникс, ну замени запятую на точку с запятой
В обоих строках менял, скрипт молча проходит, но ничего не меняет :(
FIND_ERROR
21.07.2008, 17:05
мож так проканает %) ?
<?php
mysql_connect('host', 'user', 'pass');
$z = 4; // число постов
$id = $z+316;
while ($z <> 1)
{
mysql_query ("UPDATE таблица SET id=$id WHERE id=$z");
$id--;
$z--;
}
?>
Parse error: syntax error, unexpected ',' in /home/cstrike.net/old/temp.php on line 3
line 3 - $id = 316, $z = 4;
Хм, не знал что в пхп так нельзя делать. Убого=\
Onix, в моём скрипте надо указать сразу и базу данных. Т.е. UPDATE BASE_NAME.TABLE ...
Хм, не знал что в пхп так нельзя делать. Убого=\
Onix, в моём скрипте надо указать сразу и базу данных. Т.е. UPDATE BASE_NAME.TABLE ...
Точно, я пропустил база.таблица, просто указал таблицу. Теперь всё готово. Спасибо! :)
Извиняюсь за наглость, а можно вместе со всеми постами перенести связанные комментарии?
Только начал изучать SQL .. Встала необходимость ввывести данные из базы (MySQL) в php скрипт...Написал самый простейший по итогу на экране лишь появляется надпись мои френды ...где ошибка ? В базе данные есть точно ..
<?php
error_reporting(0);
$bd=mysql_connect("localhost", "root","", "test12");
$query = "select * from friends ";
$result= mysql_query ($bd, $query);
echo "Мои френды: <br>";
while ($row = mysql_fetch_array($result)) {
echo $row["friend_name"] . ". <br>";
}
mysql_close($bd);
?>
не выбрана база
<?php
error_reporting(0);
$bd=mysql_connect("localhost", "root","");
mysql_select_db("test12");
$query = "select * from friends ";
$result= mysql_query ($bd, $query);
echo "Мои френды: <br>";
while ($row = mysql_fetch_array($result)) {
echo $row["friend_name"] . ". <br>";
}
mysql_close($bd);
?>
а названия базы , таблицы , полей точно правильные ?
убери ерор репортинг 0 и посмотри какую ошибку выдаст
В цикле while оператор присваивания? Ты ничего не перепутал?
Не помоголо ..тоже ...
Пробуй так
<?php
$lnk = mysql_connect('localhost', 'mysql_user', 'mysql_password')
or die ('Not connected : ' . mysql_error());
// сделать foo текущей базой данных
mysql_select_db('foo', $lnk) or die ('Can\'t use foo : ' . mysql_error());
?>
а названия базы , таблицы , полей точно правильные ?
убери ерор репортинг 0 и посмотри какую ошибку выдаст
Поля и название таблицы точно правильное..
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in r:\home\localhost\www\10\test12.php on line 6
Мои френды:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in r:\home\localhost\www\10\test12.php on line 9
В цикле while оператор присваивания? Ты ничего не перепутал?
не , там все правильно
Ясен красен, пароль вбей для коннекта с базой
А понятно
$result= mysql_query ($bd, $query);
НУЖНО
$result= mysql_query ($query, $bd);
resource mysql_query ( string query [, resource link_identifier] )
а у тебя наоборот :)
Ясен красен, пароль вбей для коннекта с базой
ПОЛЬЗОВАТЕЛЬ ROOT по умолчанию ..и идет без паса ...так что она там не нужен ...и если бы небыло коннекта с базой выдалась бы соответствующая ошибка ....
да и вопще нах там $bd не нужен
просто $result= mysql_query ($query); юзай
А понятно
$result= mysql_query ($bd, $query);
НУЖНО
$result= mysql_query ($query, $bd);
resource mysql_query ( string query [, resource link_identifier] )
а у тебя наоборот :)
Ага ...спс ...все заработало ))с мну +
Неполучается добавить данные формы в базу ...
для этого создал html файл
<html>
<head>
<title>Добовление друга</title>
</head>
<body>
<form aсtion="test11.php" method="get">
<table>
<tr><td>Друг<td><input name=link maxlength=30 size=30>
<tr><td colspan=2><input type=submit value="Ввод">
</table>
</form>
</body>
</html>
И затем создал скрипт с именем test11.php
<?php
$bd=mysql_connect("localhost", "root","");
mysql_select_db("test12");
$link3=$_GET["link"]
$query = "insert into friends values ("$link3") ";
$result= mysql_query ($query, $bd);
mysql_close($bd);
?>...Но что то как то ничего не добавляется ...)))))Знаю что ступил ..помогите плз
склеивать нада точками
$query = "insert into friends values (".$link3.") ";
и если у тебя в таблице не 1 поле делай так
$query = "insert into friends ('поле в таблице') values (".$link3.") ";
склеивать нада точками
$query = "insert into friends values (".$link3.") ";
и если у тебя в таблице не 1 поле делай так
$query = "insert into friends ('поле в таблице') values (".$link3.") ";
Сейчас вот такая ошибка Parse error: parse error, unexpected T_VARIABLE in r:\home\localhost\www\10\test11.php on line 5
$link3=$_GET["link"]
тут ; поставь в конце
Ага ...но терь еще интереснее ...при открытии самого файла test11.php выдается ошибка
Notice: Undefined index: link in r:\home\localhost\www\10\test11.php on line 4
[Денвер: показать возможную причину ошибки]
но по итогу в базу вносится точка .... а при потытки добвавления из формы не ч не дабовляется ....( но в адресной страке как поkоженно /test.html?link=test
test.html?link=testНе понял ...я поменял расширение файла с формой на php но это не че не дало .... ну что скажите т ?
запрос должен быть вида test.php?link=значение
и какого х у тебя action="test11.php", а не action="test.php"
сделай
echo $query;
перед
$result= mysql_query ($query, $bd);
и посмотри результат
и вообще поставь ПМА
Слушай знаешь такую книгу -
Котеров
Самоучитель php, там как раз с этого и начинается...
Не нужно лениться, прочитать 20 страничек, и тебе все станет понятно
и вообще поставь ПМА
Что такое ПМА :confused:
ПУСКАТЕЛИ ЭЛЕКТРОМАГНИТНЫЕ ПМА-3000
ТУ 16-644.005-84
НАЗНАЧЕНИЕ: Пускатели серии ПМА-3000 предназначены для применения в стационарных установках для дистанционного пуска непосредственным подключением к сети, остановки и реверсирования трехфазных асинхронных электродвигателей с короткозамкнутым ротором переменного тока частоты 50 и 60Гц; в исполнении с тепловым реле – для защиты управляемых электродвигателей от перегрузок недопустимой продолжительности.
Номинальное напряжение, В 660
Номинальный ток главной цепи при напряжении 380/660 В, 40/16
Номинальное напряжение втягивающей катушки, В 24...660
Износостойкость для классов А/Б/В:
механическая, млн. циклов ВО, не менее 16/16/8
коммутационная, млн. циклов ВО, не менее 2/1/0,3
Мощность, потребляемая катушкой включения/удержания, ВА 200/25
Частота включений в час без нагрузки/с нагрузкой 3600/1200
СТРУКТУРА УСЛОВНОГО ОБОЗНАЧЕНИЯ
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
Обозначение пускателя Исполнение по количеству Габаритные размеры LxBxH, мм
ПМА 3100 IP00 1з, 1з+1р 93х89х116
ПМА 3200 IP00 1з, 1з+1р 150х89х116
ПМА 3110 IP40 1з, 1з+1р 210х142х152
ПМА 3210 IP40 1з, 1з+1р 285х155х152
ПМА 3300 IP00 2з+2р, 4з+4р 130х200х130
ПМА 3400 IP00 2з+2р, 4з+4р 156х200х130
ПМА 3310, ПМА 3410 IP40 2з+2р, 4з+4р 275х255х15
ПМА 3500 IP00 2з+2р, 4з+4р 130х200х155
ПМА 3600 IP00 2з+2р, 4з+4р 156х200х155
ГАБАРИТНЫЕ И УСТАНОВОЧНЫЕ РАЗМЕРЫ
ПМА 3100, ПМА3200Тип пускателя Размеры, не более, мм Масса, не более, кг
L L1 B
ПМА-3100 - 93 89 1,11
ПМА-3200 150 - 1,3
ПМА3300, ПМА3400, ПМА3500, ПМА3600Тип пускателя Размеры, не более, мм Масса, не более, кг
L L1 H H1
ПМА-3300 - 130 130 12 2,95
ПМА-3400 156 - 3,1
ПМА-3500 - 130 155 36 3,25
ПМА-3600 156 - 3,4
ПМА3110, ПМА3210, ПМА3310, ПМА3410Тип пускателя Размеры, не более, мм Масса, не более, кг
A A1 A2 B L H H1
ПМА-3110 75± 132±0,5 47±1 142 200 152 39±2 1,9
ПМА-3210 90±0,5 201±0,5 53±1 155 273 2,2
ПМА-3310 156±0,5 186±0,5 70±1 255 263 152 34±2 4,28
ПМА-3410 4,7
ПУСКАТЕЛИ ЭЛЕКТРОМАГНИТНЫЕ ПМА-3000
ТУ 16-644.005-84
НАЗНАЧЕНИЕ: Пускатели серии ПМА-3000 предназначены для применения в стационарных установках для дистанционного пуска непосредственным подключением к сети, остановки и реверсирования трехфазных асинхронных электродвигателей с короткозамкнутым ротором переменного тока частоты 50 и 60Гц; в исполнении с тепловым реле – для защиты управляемых электродвигателей от перегрузок недопустимой продолжительности.
Номинальное напряжение, В 660
Номинальный ток главной цепи при напряжении 380/660 В, 40/16
Номинальное напряжение втягивающей катушки, В 24...660
Износостойкость для классов А/Б/В:
механическая, млн. циклов ВО, не менее 16/16/8
коммутационная, млн. циклов ВО, не менее 2/1/0,3
Мощность, потребляемая катушкой включения/удержания, ВА 200/25
Частота включений в час без нагрузки/с нагрузкой 3600/1200
СТРУКТУРА УСЛОВНОГО ОБОЗНАЧЕНИЯ
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
Обозначение пускателя Исполнение по количеству Габаритные размеры LxBxH, мм
ПМА 3100 IP00 1з, 1з+1р 93х89х116
ПМА 3200 IP00 1з, 1з+1р 150х89х116
ПМА 3110 IP40 1з, 1з+1р 210х142х152
ПМА 3210 IP40 1з, 1з+1р 285х155х152
ПМА 3300 IP00 2з+2р, 4з+4р 130х200х130
ПМА 3400 IP00 2з+2р, 4з+4р 156х200х130
ПМА 3310, ПМА 3410 IP40 2з+2р, 4з+4р 275х255х15
ПМА 3500 IP00 2з+2р, 4з+4р 130х200х155
ПМА 3600 IP00 2з+2р, 4з+4р 156х200х155
ГАБАРИТНЫЕ И УСТАНОВОЧНЫЕ РАЗМЕРЫ
ПМА 3100, ПМА3200Тип пускателя Размеры, не более, мм Масса, не более, кг
L L1 B
ПМА-3100 - 93 89 1,11
ПМА-3200 150 - 1,3
ПМА3300, ПМА3400, ПМА3500, ПМА3600Тип пускателя Размеры, не более, мм Масса, не более, кг
L L1 H H1
ПМА-3300 - 130 130 12 2,95
ПМА-3400 156 - 3,1
ПМА-3500 - 130 155 36 3,25
ПМА-3600 156 - 3,4
ПМА3110, ПМА3210, ПМА3310, ПМА3410Тип пускателя Размеры, не более, мм Масса, не более, кг
A A1 A2 B L H H1
ПМА-3110 75± 132±0,5 47±1 142 200 152 39±2 1,9
ПМА-3210 90±0,5 201±0,5 53±1 155 273 2,2
ПМА-3310 156±0,5 186±0,5 70±1 255 263 152 34±2 4,28
ПМА-3410 4,7Исчерпывающий ответ ...... :D
Что такое ПМА :confused:
phpmyadmin
и про книгу не забудь
phpmyadmin
и про книгу не забудь
Эт т все есть ..я просто до этого сайты только на CMS делал ...так что с кодом практически не общался ...а книжку прочту ...спс)
Подскажите пожалуйста как такое зделать :
Есть БД под названием zexel, и есть таблица user - а тут поля : id, icq , email
Подскажите как подключится таблице через php и вывести id № 1,2 ?
<?php
define(DB,"localhost");
define(DU,"login");
define(DP,"pass");
define(DBN,"zexel");
$connect = @mysql_connect(DB,DU,DP) ;
if(!$connect)
{
echo "cant connect to Mysql db";
}
$q ="Select from user where id limit 2" ;
$result = mysql_query($q);
while( $result = mysql_fetch_array($q)){
$icq = $result['icq'];
$mail = $result['mail'];
print "ICQ".$icq."MaiL" .$mail;
}
?>
Select from user where id limit 2
Что то не работает !
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Y:\denwer\www\denwer\aaa\index.php on line 13
так сделай , там выбора базы небыло
<?php
define(DB,"localhost");
define(DU,"login");
define(DP,"pass");
define(DBN,"zexel");
$connect = @mysql_connect(DB,DU,DP) ;
mysql_select_db(DBN);
if(!$connect)
{
echo "cant connect to Mysql db";
}
$q ="Select from user where id limit 2" ;
$result = mysql_query($q);
while( $result = mysql_fetch_array($q)){
$icq = $result['icq'];
$mail = $result['mail'];
print "ICQ".$icq."MaiL" .$mail;
}
?>
mad_xakep
03.08.2008, 18:19
скажите пожалуйста как мне ограничить вывод строк на одной странице из бд... чтоб например одна запись на страницу выводилась или 5
чтоб например одна запись на страницу выводилась
SELECT * FROM tbl LIMIT 1
или 5
SELECT * FROM tbl LIMIT 5
mad_xakep
03.08.2008, 18:30
']SELECT * FROM tbl LIMIT 1
SELECT * FROM tbl LIMIT 5
я так и сделал но чистый лист просто ниче невыдает типа ошибка
Dr.Frank
03.08.2008, 18:34
м.б. limit 0,5
а без лимита нормально выводит?
mad_xakep
03.08.2008, 18:35
SELECT * FROM $dtable LIMIT 1 ; вот этот клочок кода
mad_xakep
03.08.2008, 18:43
м.б. limit 0,5
а без лимита нормально выводит?
без лимита да норм выводит... я просто в бд второй день точнее учу так что извиняюсь за такие глупые вопросы
SELECT * FROM `$dtable` ORDER BY `id` DESC LIMIT 1, 1
попробуй так...
mad_xakep
03.08.2008, 19:15
SELECT * FROM `$dtable` ORDER BY `id` DESC LIMIT 1, 1
попробуй так...
ошибка
while(list($id, $name) = mysql_fetch_row($result)) {
SELECT * FROM `$dtable` ORDER BY `id` DESC LIMIT 1, 1;
echo "$id $name";
мож я не туда вставил этот код?
while(list($id, $name) = mysql_fetch_row($result)) {
SELECT * FROM `$dtable` ORDER BY `id` DESC LIMIT 1, 1;
echo "$id $name";
? это что такое? эт твой код?
mad_xakep
03.08.2008, 19:34
? это что такое? эт твой код?
канечно нет это вывод то что выше я не стал писать и выше я писал что код работает без лимита этого нормально а с лимитом непашет
mad_xakep давай весь код твой посмотрим!
да зачем весь =) mad_xakep покажи лучше как у тебя без лимита работало =)
mad_xakep
03.08.2008, 19:53
']да зачем весь =) mad_xakep покажи лучше как у тебя без лимита работало =)
я стесняюсь эту туфту показывать
<? $host = "localhost";
$user_db = "kat";
$pass_db = "777";
$dbase = "kat";
$dtable = "kat";
mysql_connect ($host, $user_db, $pass_db);
mysql_select_db($dbase);
$sql = "SELECT id, name FROM $dtable";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if ((!$rows) || ($rows < 1)) {echo "Бд пуста";
}
else {
echo '<table width="830" border="1" cellspacing="1" cellpadding="0">
<tr><td width="30">ID</td>
<td width="100">Имя</td></tr>';
while(list($id, $name) = mysql_fetch_row($result)) { echo ' <tr> <td width="30">';echo "$id"; echo'</td>
<td width="100">'; echo"$name"; echo'</td>
</tr>'; }
}
print "</table>\n";
?>
mysql_fetch_row() выдирает одну строку пробуй mysql_fetch_array()
mad_xakep
03.08.2008, 20:05
mysql_fetch_row() выдирает одну строку пробуй mysql_fetch_array()
это я сделал а как сделать чтоб выводил либо одну запись или 5
если разом пять записей то должно получаться, как писали выше, с помощью Limit 5
mad_xakep
03.08.2008, 20:12
не получается
выкладывай код как используешь с mysql_fetch_array()
вставь в цикл , должно работать
$i++;
if ($i==5){break;} //вместо 5 нужное число
mad_xakep
04.08.2008, 10:43
вставь в цикл , должно работать
$i++;
if ($i==5){break;} //вместо 5 нужное число
вот это работает спасибочки
Help! Нужет путёвый скрипт выборки из базы порциями. Внизу ссылочки 1,2,3,4... Написал своими силами, но что то мне не нравиться :( Help!
В таблице имеются следуюшие поля :
link_id- ID ссылки
link- сюда вносится ссылка введенная пользователем с формы
Так вот не скажете как сделать чтоюбы при добавлении ссылки автоматически создавался ее уникальный нормер в link_id.
Например
если ссылка была добавлена первой то id должен быть 1
если ссылка добавлена второй то id должен быть два .... и т.д.
m0nsieur
04.08.2008, 12:08
Установи полю link_id дополнительное значение auto_increment через phpmyadmin.
Примерно так можно через sql сделать:
ALTER TABLE `table` CHANGE `link_id` `link_id` INT( 11 ) NOT NULL AUTO_INCREMENT)
ALTER TABLE `table` ADD UNIQUE (`link_id`)
Установи полю link_id дополнительное значение auto_increment через phpmyadmin.
Примерно так можно через sql сделать:
ALTER TABLE `table` CHANGE `link_id` `link_id` INT( 11 ) NOT NULL AUTO_INCREMENT)
ALTER TABLE `table` ADD UNIQUE (`link_id`)
Так полю значения задал но немного подругому .....но теперь при добавлении данных в базу через форму вылезает Column count doesn't match value count at row 1
m0nsieur
04.08.2008, 13:00
Теперь при добавлении надо писать в базу link_id пустым. Покажи код как добавляешь.
Теперь при добавлении надо писать в базу link_id пустым. Покажи код как добавляешь.
Все спс .....работает )
Есть две таблицы users и link
В таблице users поля : user_id, name, pass
В таблице link user_id, link
При регистрации пользователя ему выдается id. Ну так вот нужно чтобы при входе пользователя на сайт по ему уникальному ид из таблицы link выдавалась ссылка введенная им при регистрации .....
Я так понимаю что user_ id в первой таблице должен иметь иметь значение PR, а user_id во второй таблице FK ? Я прав ...а как это сделать задать FK?
http://cheker.site88.net/ge.bmp
m0nsieur
07.08.2008, 13:05
Ты правильно понял, создаешь в таблице users поле user_id которое будет primary key, а в таблице link поле user_id оставляешь как есть или у тебя уже все создано и проблема с запросом?
m0nsieur думаю он разобрался как сделать первичный ключ, и его интересует как сделать внешний :) Видимо хочется человеку ссылочную целостность в БД поддерживать.
still12 внешний ключ создается след. образом:
Если у тебя уже созданыы таблицы, то соответственно нам необхоимо расширить их структуру
ALTER TABLE `link` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
Причем если users_id является первичным ключем, то его уточнение после REFERENCES можно опустить, т.е.
REFERENCES `users`
а ON DELETE CASCADE ON UPDATE CASCADE определяют действия базы в случае удаления\обновление того элемента, на который ссылаемся (в данном случае мы выставили каскадное, т.е. если например удалится запись о юзере, то автоматически удалятся записи о его линках)
Исходная: в строке sql таблицы password(varchar(100)) введены разные типы хэшей (MD5 и MD5:соль), отличающиеся, соответственно, длиной строки и символом-разделителем :
3b8f3744bf2a000023e470318c315543
a9b8f2d3e1cb0000c031744208939aaa:8XA0DTaXVWJ73X86
d4fa96a300000f764f90a7be296e5cdb
c4f884f2aed00000740c251a973b1e96
5d7c7d6f98be78000003ae6f707ebe59:WZyGIinDH5adLQEv
Поскажите, как сформулировать правильно запрос select, чтобы выводились только md5 строки либо шла сортировка по длине строки (сначала чтобы выводились md5 а потом соленые md5).
Заранее спасибо
.:EnoT:.
18.08.2008, 16:20
scarm
Функцией LENGTH()
SELECT * FROM `table` ORDER by LENGTH(`password`)
Соответственно если нужно вывести только md5 без соли, то так
SELECT * FROM `table` WHERE LENGTH(`password`) = 32
Можно еще, к примеру, разделить поле password на две колонки - в первой находится хэш, во второй - соль или NULL, если хэш несоленый.
mysql> select substring_index(password, ':', 1), case when locate(':', password) > 0 then substring(password, locate(':', password)+1) else NULL end from table;
| 3b8f3744bf2a000023e470318c315543 | NULL |
| a9b8f2d3e1cb0000c031744208939aaa | 8XA0DTaXVWJ73X86 |
| d4fa96a300000f764f90a7be296e5cdb | NULL |
| c4f884f2aed00000740c251a973b1e96 | NULL |
| 5d7c7d6f98be78000003ae6f707ebe59 | WZyGIinDH5adLQEv |
Ребята, есть вопрос по удалению дублей в mysql.
Имеется 5 таблиц
table_1, table_2, table_3, table_4, table_5,
Дубли надо искать по первым двум совместно.
--Создание копии таблицы без дубликатов во временной таблице
CREATE TEMPORARY TABLE bad_temp AS SELECT DISTINCT * FROM contents_site;
--Удаление всех записей из старой таблицы
DELETE FROM contents_site;
--Добавление записей без дублей
INSERT INTO contents_site SELECT * FROM bad_temp;
--Удаление временной таблицы
DROP TABLE bad_temp;
http://www.mojbred.com/706.html
http://kurapov.name/article/sql_duplicates/
.:EnoT:.
23.08.2008, 21:32
Как реализовать регистрозависимый запрос?
То исть в таблице к примеру имеется логин EnoT, так вот нужно, чтобы запросы вида
SELECT .... WHERE `login` = 'enot'
SELECT .... WHERE `login` = 'ENOT'
SELECT .... WHERE `login` = 'eNoT'
и т.д. возвращали ложь, а true возвращалась только при запросе логина такого же регистра как он записан в бд.
Запрашивать сначала логин, а потом проверять условием типа if('EnoT' == 'EnoT') echo 'ok'; не выход, нужен именно один запрос к базе.
Как реализовать регистрозависимый запрос?
То исть в таблице к примеру имеется логин EnoT, так вот нужно, чтобы запросы вида
и т.д. возвращали ложь, а true возвращалась только при запросе логина такого же регистра как он записан в бд.
Запрашивать сначала логин, а потом проверять условием типа if('EnoT' == 'EnoT') echo 'ok'; не выход, нужен именно один запрос к базе.
Можно использовать типы данных BLOB для вставки регистрозависимых данных... BLOB - аналог TEXT, но при сравнении строк регистр учитывается.
Если поле не BLOB, то
SELECT .... WHERE CAST(`login` as BINARY) = 'eNoT'
или, что то же самое
SELECT .... WHERE BINARY `login` = 'eNoT'
помогите пожалуйста, есть таблица номеров телефонов, фамилия и т.д...
выдает ошибку, как правильно будет заголовок???
CREATE TABLE PHONES (
nomer MEDIUMINT(6) default NULL,
Name varchar(60) default NULL,
street varchar(60) default NULL,
house varchar(60) default NULL,
flat varchar(60) default NULL,
) TYPE=MyISAM;
INSERT INTO PHONES values ('220000', 'ВЯЗГИН ВВ', 'ТУРГЕНЕВА', '1', '26');
INSERT INTO PHONES values ('220001', 'ДМИТРИЕВА ТМ', 'ЧУГУНОВА', '14', '6');
INSERT INTO PHONES values ('220002', 'НАЗАРКИНА ЛА', 'НАБ.1ГО МАЯ', '67', '6');
INSERT INTO PHONES values ('220022', 'ЛЕОНТЬЕВА ЛВ', 'ЖЕЛЯБОВА', '40/2', '14');
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') TYPE=MyISAM' at line 7
я все эти varchar поставил правильно или где то чтото другое???
помогите пожалуйста, есть таблица номеров телефонов, фамилия и т.д...
выдает ошибку, как правильно будет заголовок???
CREATE TABLE PHONES (
nomer MEDIUMINT(6) default NULL,
Name varchar(60) default NULL,
street varchar(60) default NULL,
house varchar(60) default NULL,
flat varchar(60) default NULL,
) TYPE=MyISAM;
INSERT INTO PHONES values ('220000', 'ВЯЗГИН ВВ', 'ТУРГЕНЕВА', '1', '26');
INSERT INTO PHONES values ('220001', 'ДМИТРИЕВА ТМ', 'ЧУГУНОВА', '14', '6');
INSERT INTO PHONES values ('220002', 'НАЗАРКИНА ЛА', 'НАБ.1ГО МАЯ', '67', '6');
INSERT INTO PHONES values ('220022', 'ЛЕОНТЬЕВА ЛВ', 'ЖЕЛЯБОВА', '40/2', '14');
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') TYPE=MyISAM' at line 7
я все эти varchar поставил правильно или где то чтото другое???
CREATE TABLE PHONES (
nomer MEDIUMINT(6) default NULL,
Name varchar(60) default NULL,
street varchar(60) default NULL,
house varchar(60) default NULL,
flat varchar(60) default NULL
) TYPE=MyISAM;
1mm0rt3s
25.08.2008, 17:37
Сабж, есть файл, в расширение sql выдернутый из мускля. нужно: скопировать столбец с паролями (они в мд5). как вы понимаете в блокноте это делать проблематично, поэтому мож кто подскажет в какую программу нужно загнать
.:EnoT:.
25.08.2008, 17:52
а есть же парсер хешей из дампов sql
Сабж, есть файл, в расширение sql выдернутый из мускля. нужно: скопировать столбец с паролями (они в мд5). как вы понимаете в блокноте это делать проблематично, поэтому мож кто подскажет в какую программу нужно загнать
<?php
preg_match_all('#[0-9a-fA-F]{32}#UiS',file_get_contents('dump.sql'),$result);
foreach($result['0'] as $md5){
echo $md5.'<br>';
}
?>
чет тока не вдуплил причем тут sql?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot