PDA

Просмотр полной версии : [sql] Вопросы по БД


Страницы : 1 2 3 [4] 5

Fuckel
22.08.2009, 18:43
Firewall + блокировать сетевой трафик = максимальная защита :D
блокировать полностью =)

jawbreaker
26.08.2009, 20:41
Пишу клиентское приложение на QT которое должно обновляться. Соответственно есть сервер БД(MySQL) и при старте программы она лезет в БД чтобы проверить не появилась ли новая версия (в БД есть ссылка на новую версию). Клиент и сервер общаются через защищённое соединение.
Возникает вопрос, может ли злобный хакер получить информацию, которую я передаю и скачать мою программку нахаляву и как с этим бороться?

Patronik
02.09.2009, 12:46
Скажите какой запрос к базе лучше для нахождения логина и пароля? Очень надо знать.

$in_login = $_POST['login'];
$in_pas = $_POST['pas'];

$sql_query = "SELECT * FROM user";
$resalt = mysql_query($sql_query);
while($row = mysql_fetch_array($resalt))
{

if (($in_login == $row['user_login']) && ($in_password == $row['user_password']))
===========================================
ИЛИ
sql_query = "SELECT * FROM user WHERE user_login = $in_login AND user_password = $in_password";

SaiRus
02.09.2009, 13:48
я особо не селен в sql, но имхо если юзать второй запрос то будет меньше кода останеться только переменную resalt обработать+таблицу полностью грузить не надо+экономишь время без цикла :)

Pashkela
02.09.2009, 14:05
$in_login = $_POST['login'];
$in_pas = $_POST['pas'];

$sql_query = "SELECT * FROM `user` where `user_login` = '$in_login' and `user_password` = '$in_pas'";

mff
10.09.2009, 19:01
При переносе форума vBulletin столкнулся с небольшой траблой, вместо букв "ш" пишет "�?"
Что ни так? Хелп!!! :(

Gray_Wolf
10.09.2009, 19:17
При переносе форума vBulletin столкнулся с небольшой траблой, вместо букв "ш" пишет "�?"
Что ни так? Хелп!!! :(
Обычно подобное можно увидеть когда текст в UTF8, а БД настроена на cp1251;

mff
10.09.2009, 19:29
Gray_Wolf, да utf и cp1251 это ясно. Как дамп исправить?
Тут есть статья http://hostinghelp.biz/content/решение-проблем-с-нарушением-отображения-букв-ш-и-и-в-резултате-неудачной-перекодировки-mysq
но там перл :(

Gray_Wolf
10.09.2009, 19:51
Gray_Wolf, да utf и cp1251 это ясно. Как дамп исправить?
Тут есть статья http://hostinghelp.biz/content/решение-проблем-с-нарушением-отображения-букв-ш-и-и-в-резултате-неудачной-перекодировки-mysq
но там перл :(
Ну а что вам мешает сделать дамп и поменять кодировку в какомнить notepad++?

Хотя если любите извращения по можете попробовать что-то типо:
$str=str_replace («И»,"& #1048;",$str);
$str=str_replace («ш»,"& #1096;",$str);
только между "&" и "#" пробел уберите.

mff
10.09.2009, 19:59
Ну а что вам мешает сделать дамп и поменять кодировку в какомнить notepad++?Нет смысла, уже менял, нету букв "ш" и "И" вместо них квадраты и знаки вопроса. Это болезнь. Как бороться?

Pashkela
10.09.2009, 22:30
Поменять все квадраты и знаки вопроса на "ш" и "и" выцепив hex-код квадратов и знаков вопросов

mff
10.09.2009, 23:18
Pashkela, а как их выцепить?

Pashkela
11.09.2009, 00:26
писал вроде уже именно тебе -
1. Переводим весь текст hex:

$text = bin2hex($text);

2. Потом примерно в таком цикле:

$count = strlen($text);
for ($i=0;$i<$count;$i++)
if ($text{$i} тут условие) {
.........

// Только тут не забываем, что hex любого символа состоит из двух значений, для условий в цикле
}
}

диапазон "нормальных букв" вернее их hex-кодов известен? Известен. Значит пишем функцию, посимвольно перебирающую текст, выбирающую hex-значения не из диапозона кроме сиволов "пробел" и "перенос строки" и прочего дерьма (спец символов). Получим твои "ш" и "и" в непонятной кодировке или просто засранные при дампе, потом обычный str_replace непонятных символов на понятные hex коды "ш" и "и", потом преобразование полученных данных в хексе обратно в читабельный вид вот такой функцией:


function hex2bin($hh) {
if (!is_string($hh)) return null;
$rr='';
for ($aa=0; $aa<strlen($hh); $aa+=2) { $rr.=chr(hexdec($hh{$aa}.$hh{($aa+1)})); }
return $rr;
}


ЗЫЖ Или еще проще - просто выкупаешь hex-коды этих квадратов и знаков вопросов, весь текст в hex (как описано выше), потом сразу str_replace, потом обратно в текст (функция выше)

mff
11.09.2009, 07:02
/*
* Исправление кодировки букв "ш" и "И" в MYSQL
* автор: Nc_Soft
* 18.07.09
*/

/*
Частенько встречается при переносе бд, либо при шаманстве с кодировками
буквы "ш" и "И" оказываются битыми (речь идет о utf-8 конечно)
буква "ш" = chr(209).chr(63) / правильно chr(209).chr(136)
буква "И" = chr(208).chr(63) / правильно chr(208).chr(152)
Чтобы пофиксить делаем 2 запроса
*/

UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);

UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
); :)

superboy4
13.09.2009, 17:53
Как можно узнать кодировку базы данных?
Каким запросом?

PvgValo
13.09.2009, 17:59
Введи:
show variables;
И будет тебе счастье

Architek86
18.09.2009, 21:57
Народ, дано в MySQL поле типа text. Как добавлять в него данные так, что бы они не заменяли содержимое поле, а дополняли его, т.е. приписывались бы к содержимому вконце?

REBUUS
24.09.2009, 14:21
как в условие селект игнорировать регистр букв

Pashkela
24.09.2009, 14:25
select LOWER(...)

REBUUS
24.09.2009, 14:30
select * from .. where LOWER(имя поля???) =$var так ???

Pashkela
24.09.2009, 15:17
ну да

mff
26.09.2009, 21:05
Добрый вечер уважаемые гуры mysql! :)
У меня такой вопросец: можно ли сослаться к столбцу "country" таблички не по имени а типа вот так - ORDER BY `column[4]`?

Или это область фантастики? :)

VDShark
26.09.2009, 21:11
Добрый вечер уважаемые гуры mysql! :)
У меня такой вопросец: можно ли сослаться к столбцу "country" таблички не по имени а типа вот так - ORDER BY `column[4]`?

Или это область фантастики? :)

траляля ORDER BY 4

mff
26.09.2009, 21:36
траляля ORDER BY 4И будет сортировать по четвёртому столбцу? Или пятому?

VDShark
26.09.2009, 21:56
И будет сортировать по четвёртому столбцу? Или пятому?
Можно было б и попробовать запустить :) По 4-му

mff
26.09.2009, 22:13
VDShark, спасибо! Всё работает! :)

crazy~driver
29.09.2009, 00:40
Народ, дано в MySQL поле типа text. Как добавлять в него данные так, что бы они не заменяли содержимое поле, а дополняли его, т.е. приписывались бы к содержимому вконце?

если чисто в мюслях то
update table set field=CONCAT(field,'aaaaa');
допишет в field строку aaaaa
у меня работает и не только с полем text ;)

referer1
29.09.2009, 17:59
а вот я пытаюсь изменить косяк в базе с отображением буквы Ш и И...
Но при попытке выполнить запрос мне выдает ошибку
UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);

UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);
#1146 - Table 'madan21_mad.tbl' doesn't exist
Вот я не могу врубиться что нужно вписывать вместо tbl ? вводил имя таблица к примеру jos3_banner но тогда ошибка была вида #1054 - Unknown column 'pole' in 'field list' хелп ми плиззз :'(?

Architek86
29.09.2009, 20:33
crazy~driver, благодарю.
Однако до полного счастья осталось разобраться с ещё одним вопросом. Уверен, это реализуется легко. Есть значит выбранная строка из базы. Надо сделать запрос в базу так, что бы он выдал ещё 5 строк: 3 предыдущие и 2 более новые от данной строки (сортируя по дате создания полей - `time`). Каг?
Выборка по полю id с auto_increment врядли подойдёт.. насколько я помню, при удалении строки список id не пересчитывается и мы можем иметь такие записи:
id name
5 aaa
6 bbb
8 ccc
В итоге вместо ожидамого id 7, предшествующему id 8, мы получим ошибку.

crazy~driver
29.09.2009, 22:00
а вот я пытаюсь изменить косяк в базе с отображением буквы Ш и И...
Но при попытке выполнить запрос мне выдает ошибку
UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);

UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);
#1146 - Table 'madan21_mad.tbl' doesn't exist
Вот я не могу врубиться что нужно вписывать вместо tbl ? вводил имя таблица к примеру jos3_banner но тогда ошибка была вида #1054 - Unknown column 'pole' in 'field list' хелп ми плиззз :'(?

referer1 слушай у меня твой запрос полностью пашет.
я загнал в mysql-front запрос и единственное что изменил это поубирал кое - где кавычки.
Вот сам запрос:
UPDATE aaa SET vvv= REPLACE(
'vvv',
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);
ааа - таблица
vvv - столбец
Поиграйся с кавычками и пробелами. Может в этом косяк или укажи имя таблицы полное (я имею в виду с бд, например document.aaa)

Neoveneficus
29.09.2009, 23:55
crazy~driver, благодарю.
Однако до полного счастья осталось разобраться с ещё одним вопросом. Уверен, это реализуется легко. Есть значит выбранная строка из базы. Надо сделать запрос в базу так, что бы он выдал ещё 5 строк: 3 предыдущие и 2 более новые от данной строки (сортируя по дате создания полей - `time`). Каг?
Выборка по полю id с auto_increment врядли подойдёт.. насколько я помню, при удалении строки список id не пересчитывается и мы можем иметь такие записи:
id name
5 aaa
6 bbb
8 ccc
В итоге вместо ожидамого id 7, предшествующему id 8, мы получим ошибку.
Я бы тебе посоветовал сделать два запроса к БД. Объединить их никак не получилось из-за limit'ов. Может, конечно, мало думал, но вариант пока только такой. Если кто-то объединит - будет интересно посмотреть, как это можно сделать.

SELECT * FROM `articles` WHERE `unixtime` < (SELECT `unixtime` FROM `articles` WHERE `articleid`='53') ORDER BY `unixtime` DESC limit 0,3;
SELECT * FROM `articles` WHERE `unixtime` >= (SELECT `unixtime` FROM `articles` WHERE `articleid`='53') ORDER BY `unixtime` ASC limit 0,3;

FireFenix
03.10.2009, 12:55
Если передаётся какой-то индетификатор строки, то почему незя с ним передавать абсолютное положение строки в БД?

<a href="?act=show&id=53&pos=153">Строка 153</a>
mysql_query('SELECT * FROM arcticles LIMIT ' . $pos - 3 . ', 6');
думаю это более рациональное

Neoveneficus
03.10.2009, 15:29
По какому принципу формируется твоя ссылка?
Представь, что человеку нужно отобразить статью по id (передается GET'ом) и отобразить две более ранних и три более поздних, если есть...
как ты это сделаешь, если зависимоть только от id?
И еще, твоя конструкция не будет работать, если $pos меньше двух.

eNergy
03.10.2009, 18:48
ломаю сайт при пподстановки ковычки пишетselect * from `www_referer` where `from_referer`='' and `to_referer`='/consultation/index.php?consultation=2'' 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 ''/consultation/index.php?consultation=2''' at line 3
какой еще рефер нужен перебрал столбцы до 30 все одно и тоже

L I G A
03.10.2009, 19:43
ломаю сайт при пподстановки ковычки пишет
какой еще рефер нужен перебрал столбцы до 30 все одно и тоже
ошибся темой - тебе сюда (http://forum.antichat.ru/threadnav46016-925-10.html)
кавычку в форму пихаешь?
+давай линк на ресурс.
ЗЫ пробуй ' OR 1=1#, если повезет -- получишь инфу из `www_referer`

$n@ke
04.10.2009, 15:12
Суть вопроса:
Есть 2 таблицы, 1 и 2.
в табл.1 есть поля - юзернейм,домен,путь
в табл.2 есь поля - юзернейм, пасс.
Юзернеймы одинаковые, но порядок и ИД - не совпадают.
то есть необходимо какое-то сравнение поля юзернейм чтоле, чтобы брал из второй таблицы только того юзера и пароль, который в данный момент выбран из первой таблицы))
Внимание, Вопрос:
(Что? ГДе? Когда? отдыхает =))

Какой запрос должен быть,что б я получил в итоге в файле или в таблице или в на экране, данные по примерно такому шаблону:
1.username,1.domain,1.path,2.pass

где 1- первая табла, 2 - вторая.

p0is0n
04.10.2009, 15:21
Суть вопроса:
Есть 2 таблицы, 1 и 2.
в табл.1 есть поля - юзернейм,домен,путь
в табл.2 есь поля - юзернейм, пасс.
Юзернеймы одинаковые, но порядок и ИД - не совпадают.
то есть необходимо какое-то сравнение поля юзернейм чтоле, чтобы брал из второй таблицы только того юзера и пароль, который в данный момент выбран из первой таблицы))
Внимание, Вопрос:
(Что? ГДе? Когда? отдыхает =))

Какой запрос должен быть,что б я получил в итоге в файле или в таблице или в на экране, данные по примерно такому шаблону:
1.username,1.domain,1.path,2.pass

где 1- первая табла, 2 - вторая.

SELECT
`t1`.username, `t1`.domain, `t1`.path, `t2`.pass
FROM `t1` INNER JOIN `t2` ON `t1`.username = `t2`.username

$n@ke
04.10.2009, 15:51
Спасибо большое!) Работает.

superboy4
04.10.2009, 15:58
Я в виртуальной машине Ubuntu 9.04 и у меня есть возможность поднять репу кому-либо!

А как мне сменить кодировку базы данных или всего Mysql на utf-8??

зы: phpmyadmin у меня нету
посоветуйте простой и элегантный способ.

ПО-МА-ГИ-ТЕ

superboy4
04.10.2009, 16:34
я уже замучился, ничего не помогает. Хочу чтобы в Mysql была кодировка UTF-8, а у меня сейчас latin1 :mad: :mad:

ZirroCool
04.10.2009, 16:51
При создании новой БД можно явно указать кодировку:

mysql> create database 'database_name' DEFAULT CHARACTER SET utf8
mysql> COLLATE utf8_bin;

Если вам нужно поменять кодировку для уже существующих таблиц, выполните следующую команду:

mysql> ALTER TABLE `table_name` DEFAULT CHARACTER SET utf8 COLLATE
mysql> utf8_general_ci;

crazy~driver
04.10.2009, 22:55
я уже замучился, ничего не помогает. Хочу чтобы в Mysql была кодировка UTF-8, а у меня сейчас latin1 :mad: :mad:

superboy4, если у тя мюсли версии 5.x, то сделай следующее:
в конфигурационном файле /etc/my.cnf, раздел mysqld
добавь следующее:

default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
init-connect="SET NAMES utf8"
skip-character-set-client-handshake

а в раздел mysqldump добавь только

default-character-set=utf8

Коли версия другая, отпишись че то придумаем :)

qW1zer
11.10.2009, 21:46
Здравствуйте,в общем раньше с мускулом сам не работал!Не приходилось писать подключения или еще что-либо!Сейчас столкнулся с очень таки нужной темой,проблема в том что я не представляю пока что как и что!
Суть:сделать что-то вроде регистрации!
Подскажите не на примере а на словах и с помощью каких функций в php можно сделать следующее:
Юзверь,заходит на страницу,вбивает данные в форму!Данные с этой формы вбиваются в мускул базу!
Расскажите как,что и почему!
Если кто может показать пример,буду премного благодарен!Спасибо заранее

REBUUS
11.10.2009, 21:50
$query =mysql_query("INSERT INTO `table_name` (`id`,`name`,`pole3`) values (null,'мия','значение')
вот так через пхп заносят в мускул

qW1zer
11.10.2009, 21:54
$query =mysql_query("INSERT INTO `имя_таблицы_в_базе` (`имя_формы1`,`имя_формы_2`,`3`) values (null,'мия','значение')
то есть так это да?Ну в последнем значения форм,это я уже понял!Или там ид,имя формы и поле?Не совсем просто понял
А как вообще подключится и создать таблицу,той же php функцией!

diGriz
11.10.2009, 22:11
$query =mysql_query("INSERT INTO `имя_таблицы_в_базе` (`имя_формы1`,`имя_формы_2`,`3`) values (null,'мия','значение')
то есть так это да?Ну в последнем значения форм,это я уже понял!Или там ид,имя формы и поле?Не совсем просто понял
А как вообще подключится и создать таблицу,той же php функцией!

$query =mysql_query("INSERT INTO `имя_таблицы_в_базе` (`столбец(id)`,`cтолбец(name)`,`3`) values (null,'мия','значение')

Простой пример с добавлением данных в бд.

<?php
//подключаешься к БД
$dblocation="localhost";
$dbname="mdb";
$dbuser="root";
$dbpassword="";
$db_connect = mysql_connect($dblocation,$dbuser,$dbpassword);
$db_select = mysql_select_db($dbname,$db_connect);
$login =$_POST['login']; //данные с формы
$password =$_POST['password'];
$userAdd = mysql_query("INSERT INTO
users (login,password)
VALUES
('$login', '$password'");
?>


Ссылка по теме:
http://php.su/mysql/?functions

qW1zer
11.10.2009, 22:19
diGrizСпасибо с этим выручил!
И последний на сегодня вопросец,как теперь вытащить из базы эти же логин и пасс?
То есть к примеру вывести их в переменную $db_login и $db_pass!
Очень выручили

diGriz
11.10.2009, 22:24
Например так:

$query = mysql_query("SELECT login, password FROM users WHERE login = '$login' AND password = '$password'");
$result = mysql_fetch_array($query);
echo $result['login'];

qW1zer
11.10.2009, 22:33
Спасибо,этот код выведет как я понял все из поля логин?Ну если у меня в таблице будет логин1 логин2 и т.д!Как будет тогда?

diGriz
11.10.2009, 22:35
Спасибо,этот код выведет как я понял все из поля логин?Ну если у меня в таблице будет логин1 логин2 и т.д!Как будет тогда?

Вот так:

$query = mysql_query("SELECT * FROM users");
while($result = mysql_fetch_array($query)) {
echo $result['login']."<br />";
}

qW1zer
11.10.2009, 22:37
Все,огромное человеческое спасибо!

harom
13.10.2009, 15:16
нужно проэкранировать код вставки видео с youtube.com .

Код в формате html заносится в базу
чем лучше сделать

(скрипт самописный)

mff
14.10.2009, 19:54
Помогите с запросом :)

krypt3r
14.10.2009, 21:28
Один из способов

UPDATE t1 SET url = REPLACE(url, 'site.ru/forum', 'forum.site.ru') WHERE INSTR(url, 'site.ru/forum') > 0;

mff
14.10.2009, 22:01
krypt3r, мне нужно в базе данных во всех сообщениях булки поменять через phpmyadmin

krypt3r
14.10.2009, 22:13
А какая разница-то? Под рукой булки нет, а на примере IPB будет

UPDATE ibf_posts SET post = REPLACE(post, 'site.ru/forum', 'forum.site.ru') WHERE INSTR(post, 'site.ru/forum') > 0;

mff
15.10.2009, 00:21
SET post что такое post?

[dword]
15.10.2009, 00:53
что такое post?
post - это поле.

Для vBulletin это будет выглядеть так

UPDATE forum_post SET pagetext = REPLACE(pagetext, 'site.ru/forum', 'forum.site.ru') WHERE INSTR(pagetext, 'site.ru/forum') > 0;

forum_post - название таблицы (forum_ - префикс, по дефолту его нет.)
pagetext - название поля

M@ZAX@KEP
15.10.2009, 17:58
У меня проблемы с добавлением в базу русского текста.

При установке и настройке SQL-сервера я выбрал кодировку cp-1251 (кириллица кароче), в файле my.ini прописал в блоке [client] вот такое:
character-sets-dir="F:/Progs/Apache/MySQL/share/charsets"
(всё правильно, раз 5 проверял :D) Далее в блок [mysqld] вбацал:
character-sets-dir="F:/Progs/Apache/MySQL/share/charsets"
init-connect="SET NAMES cp1251"

Тобишь по идее кириллица должна работать.
Поехали:
USE test;
CREATE TABLE `news` (
`id` int(11) NOT NULL default '0',
`date` varchar(8) NOT NULL default '',
`time` varchar(7) NOT NULL default '',
`caption` varchar(50) NOT NULL default '',
`text` text NOT NULL,
`avtor` varchar(50) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

INSERT INTO `news` VALUES (1, '23/03/07', '12:30', 'Здравствуй вася :)', 'Бла-бла-бал :)\r\nи прочий ненужный текст... :P', 'MX');
INSERT INTO `news` VALUES (2, '24/03/07', '11:10', 'А русский не робит', 'А вот кириллица нифига не отображаццо\r\nВыглядит как аброкадабра просто((', 'MX');


Всё робит нормально, но кириллические символы заносятся в БД неправильно. Они начинают правильно отображаться на странице только если поставить кодировку cp866! То есть текст почему-то заносится в базу не в cp-1251, а в долбаном cp866! :confused: Подскажите, пожалуйста как это исправить и что именно я сделал нитаг? :(

Patronik
16.10.2009, 13:28
файли sql ето бинарный тип даных, Mysql может перекодировать в любую кодировку.
Попробуй поставить в файле с подключением к серверу поле подключения две строки
$sqlencod = "set names cp1251";
mysql_query($sqlencod);
и сохрани, должно помочь.

Doom123
17.10.2009, 18:20
Почему при таком запросе берётся только одна запись подходящее под условие `ankets`.`order_id` = `posred`.`id` а не все ?


UPDATE `ankets`,`posred`
SET `priority` = CASE WHEN `tp` != "-1" AND `balance` >= `tp`
THEN `tp` WHEN `priority` != 0 AND `balance` < `priority`
THEN 0 ELSE `priority` END,
`balance` = CASE WHEN `balance` >= `tp` AND `tp` != "-1"
THEN `balance` - `tp` WHEN `priority` != 0
THEN `balance` - `priority` ELSE `balance` END ,`tp` = "-1"
WHERE `ankets`.`order_id` = `posred`.`id`

Roston
18.10.2009, 03:50
Драсте
Мне нужно создать БД sqlite. Пробовал програмкой SQLite expert. В базе даных всего одна таблица и два поля id и text. Собсно когда пытаюсь приконектиццо к ней выдает такую ошибку

arning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in Z:\home\sql\www\sqnews.php5 on line 6

Warning: sqlite_query() expects parameter 1 to be resource, string given in Z:\home\sql\www\sqnews.php5 on line 10

Warning: sqlite_fetch_array() expects parameter 1 to be resource, null given in Z:\home\sql\www\sqnews.php5 on line 11

Помогайте плз

ZEXEL
28.10.2009, 22:48
Есть таблица hack, существует поле count которое равняеться 1
Как одним запросом делать что бы count увеличивалось на один каждым запросом !

L I G A
28.10.2009, 22:53
Есть таблица hack, существует поле count которое равняеться 1
Как одним запросом делать что бы count увеличивалось на один каждым запросом !
UPDATE `table`SET count=count+1
я правильно понял?

krypt3r
28.10.2009, 22:58
Может быть, автоинкремент повесить на поле?

dimash
29.10.2009, 20:47
Объясните, пожалуйста такое. 1, 2 одного и тоже. Какая прицнипиальная разница?
$query = "SELECT password FROM users WHERE name='".$_POST['login']."'";
$login_authentication = mysql_query($query);
if(mysql_num_rows($login_authentication) > 0)
{
// Получаем пароль
$password = mysql_result($login_authentication,0);
// Сравниваем пароль из базы данных и введённый посетителем
if ($_POST['password'] == $password)
{
echo "Hello, $login";
}
}
$query = "SELECT * FROM users where name='".$login."' and pass = '".$password."';

crazy~driver
29.10.2009, 20:56
Привет подскажите, есть ли мюслях запрос, чтобы искал заданное значение по всей бд

dimash
29.10.2009, 21:16
Привет подскажите, есть ли мюслях запрос, чтобы искал заданное значение по всей бд
SELECT * FROM *
просто

Patronik
01.11.2009, 03:42
Объясните, пожалуйста такое. 1, 2 одного и тоже. Какая прицнипиальная разница?
$query = "SELECT password FROM users WHERE name='".$_POST['login']."'";
$login_authentication = mysql_query($query);
if(mysql_num_rows($login_authentication) > 0)
{
// Получаем пароль
$password = mysql_result($login_authentication,0);
// Сравниваем пароль из базы данных и введённый посетителем
if ($_POST['password'] == $password)
{
echo "Hello, $login";
}
}
$query = "SELECT * FROM users where name='".$login."' and pass = '".$password."';

Принципиальной разници нету. Во втором варианте код просто короче получиться.

qW1zer
01.11.2009, 15:59
Подскажите какой параметр или что либо еще нужно поставить чтобы записи в базе формировались по значению,к примеру в поле А значение 5,а в боле B значение 7
Как сделать чтобы B соответственно выводилось впереди?
Если так нельзя,подскажите что можно с таким выводом в PHP сделать

Forcer
01.11.2009, 16:23
Подскажите какой параметр или что либо еще нужно поставить чтобы записи в базе формировались по значению,к примеру в поле А значение 5,а в боле B значение 7
Как сделать чтобы B соответственно выводилось впереди?
Если так нельзя,подскажите что можно с таким выводом в PHP сделать

такая таблица?
|NAME|VALUE|
| A | 5 |
| B | 7|
если да, то вот запрос:
SELECT * FROM TABLE_NAME ORDER BY VALUE DESC

m0Hze
01.11.2009, 16:27
Подскажите какой параметр или что либо еще нужно поставить чтобы записи в базе формировались по значению,к примеру в поле А значение 5,а в боле B значение 7
Как сделать чтобы B соответственно выводилось впереди?
Если так нельзя,подскажите что можно с таким выводом в PHP сделать
ASC, DESC

harom
04.11.2009, 14:04
подскажите в чём разница:

$userNames = array('MITIBITI', 'tabu','Dariy','Tema');

и

$res= mysql_query ("SELECT login FROM user ",$db);
$userNames= mysql_fetch_array($result);


почему из второго варианта извлекается только одно значение масива? как извлечь в масив все не применяя цикл?

krypt3r
04.11.2009, 14:28
Потому что

mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both

Greenkas
08.11.2009, 00:26
harom, без цикла можно вывести только функцией print_r($userNames)

Patronik
11.11.2009, 01:08
подскажите в чём разница:

$userNames = array('MITIBITI', 'tabu','Dariy','Tema');

и

$res= mysql_query ("SELECT login FROM user ",$db);
$userNames= mysql_fetch_array($result);


почему из второго варианта извлекается только одно значение масива? как извлечь в масив все не применяя цикл?

так как ты написал во втором варианте. mysql_fetch_array сама возвращает масив из результата запроса. $userNames будет масивом

Doom123
13.11.2009, 18:05
есть столбец COL1 в таблице TABLE1 в котором скажем содержимое 1,2,3,4
и второй столбец COL2 в другой таблице TABLE2 в котором содержимое 1,2,3

мне нужно сднлать чтото типо такого одним запросом:

WHERE 1 IN(1,2,3,4)
WHERE 2 IN(1,2,3,4)
WHERE 3 IN(1,2,3,4)

какбы разделить данные в COL2 по запятой и проверить существует ли он в COL1

krypt3r
14.11.2009, 02:22
LEFT/RIGHT JOIN?

Doom123
14.11.2009, 14:07
krypt3r нет .. ты не понел дело не в том чтоб взять данные с двух таблиц а в том чтоб проверить есть ли хотябы одно совпадение из COL1 в COL2 есть ли в COL2 хотябы одна из этих цифр 1,2,3 а в COL2 данные вида 1,2,3,4,5,6

типо совпадения есть и 1 есть в COL2 и 2 и 3

nikp
14.11.2009, 14:42
Объясните, пожалуйста такое. 1, 2 одного и тоже. Какая прицнипиальная разница?
$query = "SELECT password FROM users WHERE name='".$_POST['login']."'";
$login_authentication = mysql_query($query);
if(mysql_num_rows($login_authentication) > 0)
{
// Получаем пароль
$password = mysql_result($login_authentication,0);
// Сравниваем пароль из базы данных и введённый посетителем
if ($_POST['password'] == $password)
{
echo "Hello, $login";
}
}
$query = "SELECT * FROM users where name='".$login."' and pass = '".$password."';

Второй скрипт уязвим для обхода авторизации по типу
login="' or 1=1 --

Architek86
14.11.2009, 21:12
Народ, есть запрос:
"SELECT `id`,`cena_bannera`,`date_cena` FROM `puppy_users` WHERE `my_porodki` like '%" . $pord . "%' AND `act_bannera` = 1 ORDER BY `cena_bannera` DESC,`date_cena` ASC"
Можно ли изменить запрос так, что бы он при выборе строк смотрел, что за `id`, если оно равно, например, 10, то к результату `cena_bannera` прибавлял бы, например, 5 (прибавлял бы к результату, а не делал UPDATE поля!!!) и, естественно, сортировал бы результат (т.е. ORDER BY `cena_bannera` DESC) с учётом изменённого `cena_bannera`?

P.S. Знаю, есть в MySQL IF(), но каким боком его там заюзать...

m0Hze
14.11.2009, 21:33
if(условие)var+5

krypt3r
14.11.2009, 21:45
"SELECT `id`,if(`id` = 10, `cena_bannera` + 5, `cena_bannera`) as `cb`,
`date_cena`
FROM `puppy_users`
WHERE `my_porodki` like '%" . $pord . "%'
AND `act_bannera` = 1
ORDER BY `cb` DESC,`date_cena` ASC"

felix_
17.11.2009, 01:13
$one = mysql_qurey("SELECT * FROM user WHERE id=1 LIMIT 1",$connect);
$name1=mysql_fetch_array($one);
echo $name1[name];


$one = mysql_query("SELECT name FROM user WHERE id=1 LIMIT 1",$connect);
$name2=mysql_fetch_array($one);
echo $name2[name];


по идее второй код занимает меньше памяти? или нет смысла выбирать столбцы только те которые нужны?

Pashkela
17.11.2009, 01:27
думаю есть смысл, и дело скорее не в памяти, а скорости sql-запроса + нагрузка на БД

тем более если в итоге нужно только name выцепить

krypt3r
17.11.2009, 09:45
Всегда стараюсь выцепить только те колонки, которые действительно нужны. Имхо не слишком целесообразно брать все 30 полей из таблицы, если нужно на самом деле одно-два-три

erihtoney
17.11.2009, 10:32
$one = mysql_qurey("SELECT * FROM user WHERE id=1 LIMIT 1",$connect);
$name1=mysql_fetch_array($one);
echo $name1[name];


$one = mysql_query("SELECT name FROM user WHERE id=1 LIMIT 1",$connect);
$name2=mysql_fetch_array($one);
echo $name2[name];


по идее второй код занимает меньше памяти? или нет смысла выбирать столбцы только те которые нужны?
Раз уж задумался о памяти, было бы разумнее использовать mysql_fetch_assoc, не забивая память

OnArs
21.11.2009, 10:33
Здравствуйте!

В таблице keywords записаны следующий строки:
i want buy moto
i want buy new auto
want i buy motocycle
buy want i new moto

Строка-поиск: i want buy

Возможно ли запросом выбрать все строки, в которых присутствуют слова из исходной строки поиска?

Обычным
SELECT * FROM keywords WHERE string LIKE '%i want buy%'
не обойтись, т.к. вернуться только первые две строки, мне нужно вернуть все. Это возможно? Если возможно то как?

Заранее благодарен!

krypt3r
21.11.2009, 12:46
Попробуйте как-нить так

string RLIKE '(^| )i( |$)'
AND string RLIKE '(^| )want( |$)'
AND string RLIKE '(^| )buy( |$)'

OnArs
21.11.2009, 22:54
Ещё раз здравствуйте!


В таблице строки:
id string
1 я строчкоо
2 я строчкоо
1 я строчкоо
5 я строчкоо
9 я строчкоо
19 я строчкоо
21 я строчкоо


Нужно получить НОМЕР строки в таблице, т.е. для строки с id = 5 запрос должен вернуть 4

Возможно ли это? Если да, то как будет выглядеть запрос или в какую сторону копать? :confused:

Заранее благодарен! :rolleyes:

Osip
22.11.2009, 01:23
mysql_num_rows() ?

SaiRus
22.11.2009, 04:23
таблица, три поля:
- ид (автоинкримент)
- идф (уникальное)
- текст

как заполнять в пхп правильно уникальное поле, разве только генерить число, проверять через цикл есть ли оно в поле "идф", если нет вставлять?что то кажеться как то проще должно быть :)

LStr1ke
22.11.2009, 05:15
if(mysql_query("SQL QUERY"))
{
//Тут действие если успешно добавлено уникальное значение
echo "Добавлено";
}else echo "Не добавлено, ключ совпадает";
?>

SaiRus
22.11.2009, 05:30
2LStr1ke, суть в том что ИД должно автоматом без участия пользователя вводиться, можно конечно проверять первую и последнюю запись и делать соответствующие выводы, а проще не бывает? спасибо за совет

LStr1ke
22.11.2009, 05:33
Если ИД у тебя автоинкремент, то можешь в запросе его не указывать, оно само увеличится на 1

L I G A
22.11.2009, 16:05
Если ИД у тебя автоинкремент, то можешь в запросе его не указывать, оно само увеличится на 1
mysql_insert_id()


__________
0ph.ru

DiHWO
23.11.2009, 16:46
SaiRus, вот так:

mysql_query("INSERT INTO `your_table` (`id`, `idf`, `text`) VALUES (NULL,'lalala','lalala')")

Тобишь, в месте, где ID, надо писать HULL.

Architek86
24.11.2009, 16:55
Что означает следующая ошибка:
Warning: mysql_connect(): Lost connection to MySQL server at 'sending authentication information', system error: 32 in /home/admin/domains/***.ru/public_html/arefresh.php on line 3

???
Я так понимаю, это скорее всего проблема хостера?

Architek86
24.11.2009, 17:08
таблица, три поля:
- ид (автоинкримент)
- идф (уникальное)
- текст

как заполнять в пхп правильно уникальное поле, разве только генерить число, проверять через цикл есть ли оно в поле "идф", если нет вставлять?что то кажеться как то проще должно быть :)

Я бы на твоем месте базу немного по иномму бы огранизовал, сделав идф автоинкрементом. Почему? да потому что AUTO_INCREMENT генерирует число, не из соображений "создать новое максимальное число", а из соображений "создать уникальное число"
UNIQUE же используется для того, дабы, не дай бог, злобный юзверь не внёс в базу то, что уже есть, иначе получишь предупреждение, или же возможность UPDATE старый UNIQUE с помозью команды ON DUPLICATE KEY UPDATE ))). Просто не путайте понятия, и тогда решение задачи станет легче :)

felix_
25.11.2009, 10:01
есть таблица со столбцами id и status
1 room
2 flat
3 room
4 house
5 room
6 house


как сделать чтоб вывдоилось колличество вхождений от большего к меньшему по стоблцу status, из этой таблици выводится должно
3 room
2 house
1 flat

krypt3r
25.11.2009, 11:41
SELECT COUNT(*), `status` FROM `mytable` GROUP BY `status` ORDER BY 1 DESC;

Byrger
25.11.2009, 21:35
есть табличка logins
Надо вывести логины начинающиеся на букву напимер A
Используя толкьо SQL запрос (MySQL)

SELECT * FROM logins WHERE name=????

diGriz
25.11.2009, 21:41
SELECT * FROM logins WHERE name LIKE 'a%'

Scipio
25.11.2009, 21:45
SELECT * FROM logins WHERE left(name,1)='A'

Pashkela
25.11.2009, 21:50
SELECT * FROM `logins` where SUBSTRING(`username`,1,1) = 'A'

правда тоже регистропох....как и LEFT, гы

Большой джо
26.11.2009, 20:34
Как в MySql Вывести данные, отсортированные по Primary ключу?

Pashkela
26.11.2009, 20:41
$query = "select * from `[table]`order by `[ключ]` DESC - по убыванию
$query = "select * from `[table]`order by `[ключ]` ASC - по возрастанию

PS: [] потом удалить конечно

Большой джо
26.11.2009, 20:42
$query = "select * from `[table]`order by `[ключ]` DESC - по убыванию
$query = "select * from `[table]`order by `[ключ]` ASC - по возрастанию

PS: [] потом удалить конечно
Благодарю)

wolmer
26.11.2009, 23:13
UPDATE pr_admins SET value='MyTheme' WHERE setting='theme'

Что не так? :mad:

Пишет:Unknown column 'setting' in 'where clause'

Колонки:
setting
value

zythar
26.11.2009, 23:41
попробуй `value` и `setting`

wolmer
26.11.2009, 23:47
попробуй `value` и `setting`
Пробывал, все так же

zythar
26.11.2009, 23:59
а если и имя таблицы в `` заключить?

wolmer
27.11.2009, 00:01
а если и имя таблицы в `` заключить?
Все так же

zythar
27.11.2009, 00:18
хз.. я у себя такую же таблицу создал, поробовал, все пашет и в первоначальном варианте...

kickboxer
27.11.2009, 06:17
вообщем, у меня есть база данных, упакованная в *.gz
проблема в том, что архив не докачен на 10 мегабайт, возможно ли и как восстановить БД или хотябы отдельные элементы оттуда, такие как имя пользователей, хэш паролей=)
вот ссылка на недокаченный файл:
http://depositfiles.com/ru/files/8ereiatat
или
http://letitshare.ru/265bxwzl0ru8.html

dinar_007
27.11.2009, 18:38
вообщем, у меня есть база данных, упакованная в *.gz
проблема в том, что архив не докачен на 10 мегабайт, возможно ли и как восстановить БД или хотябы отдельные элементы оттуда, такие как имя пользователей, хэш паролей=)
вот ссылка на недокаченный файл:
Попробуй разобраться в архиве... Измени все CRC, перепотраши все смещения файлов и сформируй новый архив :) А вообще, винрар вроде может делать это, там аптечка есть...

kickboxer
28.11.2009, 19:11
Попробуй разобраться в архиве... Измени все CRC, перепотраши все смещения файлов и сформируй новый архив :) А вообще, винрар вроде может делать это, там аптечка есть...
а это как?:)
а то я в этих вопросах ни бум-бум...
так винрар вообще не хочет открывать этот файл, не могу там ничего сделать

Byrger
30.11.2009, 18:30
как привильно создать запрос в 2 таблицы
1 таблица Accounts с полями id и login
2 таблица Types с полями loginid и type
поля liginid и id так скажем идентичны

Нужно правильно написать запрос типа
SELECT * FROM Accounts,Types WHERE...

Нужно правильно написать WHERE если из скрипта нам приходит $id Допустим 1

Tombik
07.12.2009, 04:05
дайте, плиз, ссылку на описание русс. по phpMyAdmin, создание табл, описание каждого значения, атрибуты, сравнения и т.д., заранее, спасибо.
Знаменитым методом "тыка", не особо хочется)

b3
07.12.2009, 06:04
Причем тут phpMyAdmin, ето всего лиш графическая оболочка, интерфейс для взаимодействия с MySQL, из этого вытекает что учить нужно сам язык http://www.mysql.ru/docs/

Tombik
08.12.2009, 13:19
Помогите, вот в майпхпадмин выставлено число, при выводе, выводит в таком виде 234.23, а нужно целое число, как это сделать?

http://i026.radikal.ru/0912/76/0d0f42453eb0.jpg

b3
08.12.2009, 15:18
intval()

Tombik
08.12.2009, 18:14
intval()
а точнее? где это сделать?

LStr1ke
08.12.2009, 18:58
Когда выводишь результат запроса к БД.
intval($out);

Pashkela
08.12.2009, 19:01
Сейчас выяснится, что задаватель вопроса кодирует на Python, вот увидите. Вообще сама постановка вопроса "Помогите, вот в майпхпадмин выставлено число, при выводе, выводит в таком виде 234.23, а нужно целое число, как это сделать?" отбивает всякое желание отвечать - выводе, где? В вашем воспаленном мозге?

PS: Верните баллы, пусть лучше скули постят, читать на ачаде нечего стало вообще

extreemal
08.12.2009, 19:05
print (int)$float;

Tombik
08.12.2009, 19:06
Сейчас выяснится, что задаватель вопроса кодирует на Python, вот увидите. Вообще сама постановка вопроса "Помогите, вот в майпхпадмин выставлено число, при выводе, выводит в таком виде 234.23, а нужно целое число, как это сделать?" отбивает всякое желание отвечать - выводе, где? В вашем воспаленном мозге?

PS: Верните баллы, пусть лучше скули постят, читать на ачаде нечего стало вообще
ппц, тема для чего? Для нубов! Вот я и залез сюда, т.к. не шарю в этом.
На выводе, на самом сайте, выводит не целое число.

LStr1ke
08.12.2009, 19:13
На выводе, на самом сайте, выводит не целое число.
Да уж пашкела прав =\
На чем сайт сделан?

Tombik
08.12.2009, 22:12
забейте. В этой теме лучше засрут, чем советом помогут.

VDShark
09.12.2009, 03:11
Помогите, вот в майпхпадмин выставлено число, при выводе, выводит в таком виде 234.23, а нужно целое число, как это сделать?

http://i026.radikal.ru/0912/76/0d0f42453eb0.jpg

2Все: Тема называется "Вопросы по БД"... Логично что человек хотел услышать как это сделать на стороне БД?

2Tombik:
Язык SQL имеет функцию CAST, предназначенную для явной конвертации между типами.
http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html
Элементарный пример использования:
SELECT CAST(field AS decimal) FROM table
Где field - твое поле с числом, table - таблица.

VDShark
09.12.2009, 03:17
как привильно создать запрос в 2 таблицы
1 таблица Accounts с полями id и login
2 таблица Types с полями loginid и type
поля liginid и id так скажем идентичны

Нужно правильно написать запрос типа


Нужно правильно написать WHERE если из скрипта нам приходит $id Допустим 1

Декартово произведение, как ты предложил, здесь будет более затратным ИМХО. С ним так:

SELECT * FROM Accounts AS ac,Types AS tp
WHERE ac.id = tp.loginid


Боле уместно, на мой взгляд, будет эти таблички сджойнить

SELECT * FROM Accounts AS ac
JOIN Types AS tp ON ac.id = tp.loginid

spamoney
10.12.2009, 06:33
Здравствуйте, помогите разобраться почему возникает ошибка:

WARNING: mysql_data_seek() [<a href='function.mysql-data-seek'>function.mysql-data-seek</a>]: Offset 10 is invalid for MySQL result index 29 (or the query data is unbuffered)

Запрос:
$result = mysql_query ("SELECT * FROM table");
if (!mysql_data_seek ($result , 0)) echo "Cannot seek to row";

Patronik
10.12.2009, 21:42
забейте. В этой теме лучше засрут, чем советом помогут.
если результат запроса есть число, то функция intval(); приведет его к целочисленному типу.
Например
$result1 = 3.14;
echo ' '.$result1.' нецелочисленный результат <br> ';

$result2 = intval($result1);
echo ' '.$result2.' целочисленный результат';

0xF0RD
11.12.2009, 15:36
HI ALL!!!
Такая проблема:
У юзера в БД MYSQL (5.1) имеются права на все таблицы и базы данных.
Вопрос:
Как с помощью операторов языка ограничить доступ юзера к таблицам mysql, information_schema?
Заранее всем спасибо!

b3
11.12.2009, 15:54
Так
REVOKE ALL PRIVILEGES ON `dle` . * FROM 'test'@'%';
GRANT USAGE ON `dle` . * TO 'test'@'%';

ANTIHАCK
13.12.2009, 23:44
есть запрос: SELECT * FROM `user` WHERE `ip` = 10.2.197.11

естественно он не выполняется из за точек в IP ... как сделать что бы он с точками работал?..

ANTIHАCK
13.12.2009, 23:54
Вроде это называется "экранировать точки")) Гугл не помогает... есть ли способы?

[Raz0r]
13.12.2009, 23:59
естественно он не выполняется из за точек в IP ... как сделать что бы он с точками работал?..
может быть в кавычки взять? )
вообще правильнее использовать inet_ntoa()

ANTIHАCK
14.12.2009, 00:11
Черт забыл про кавычки) я тормоз.

REBUUS
15.12.2009, 05:46
Где в настройках мускула разрешить доступ к базе с других компов ? ось unix если имеет значение

krypt3r
15.12.2009, 07:46
Поле `host` в таблице `mysql`.`user` + FLUSH PRIVILEGES;

b3
15.12.2009, 14:01
так

GRANT ALL PRIVILEGES ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD";
или
grant select,insert,update, delete ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD";
обновить привелегии:
FLUSH PRIVILEGES;

REBUUS
15.12.2009, 16:39
Спасибочки...
а как создать пользовате GRANT ALL PRIVILEGES ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD"; пользователя через SSH клиент ?

Solide Snake
15.12.2009, 18:47
mysql> GRANT ALL PRIVILEGES on *.* to <user@host> IDENTIFIED by <password> WITH GRANT OPTION;

Или я туплю по пьяни...((

REBUUS
15.12.2009, 19:11
mysql> GRANT ALL PRIVILEGES on *.* to <user@host> IDENTIFIED by <password> WITH GRANT OPTION;

Или я туплю по пьяни...((

Через SSH клиент , сервер на линюксе , со всоего компа подключился через SSH , установил мускул , во время установки создал рут пользователя, но со своего компа не получается подключится к базе , может потому что пользователь root@localhost , а нужен root@myip
Хотя может быть 3306 порт закрыт, тогда подскажите в каком файле и где его открывать ?

b3
15.12.2009, 19:13
пользователя через SSH клиент ?
Причем тут SSH )) Через консоль MySQL, вводиш в терминале:
mysql -u root -p [enter]
Далее вводиш пароль, залогинились и там:
GRANT ALL PRIVILEGES ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD";

REBUUS
15.12.2009, 19:21
а может юыть 3306 порт закрыть для удаленного подключения ?

HackUA
16.12.2009, 00:53
созданое уже поле id, как ему присвоить auto_increment ?

comeoff
16.12.2009, 22:53
есть таблица register, в ней 6 полей, id,usr,pass,email,regIP,dt(datatime)
какие поля нужно добавить, что бы в последующем: вёлся учёт рефералов, вёлся учёт отправленных смс рефералами, вёлся учёт тех кто не по реф ссылке регистрировался? заранее всем спс. а то я уже не могу сам додумать.

REBUUS
17.12.2009, 00:41
есть таблица register, в ней 6 полей, id,usr,pass,email,regIP,dt(datatime)
какие поля нужно добавить, что бы в последующем: вёлся учёт рефералов, вёлся учёт отправленных смс рефералами, вёлся учёт тех кто не по реф ссылке регистрировался? заранее всем спс. а то я уже не могу сам додумать.

я бы для учета реф смс создал отдельную таблицу, а что бы :
вёлся учёт тех кто не по реф ссылке регистрировался
просто добавь поре ref и туда заноси ко какому реф id зарегистрировался, или оставляй пустым если не по реф ссылке зарегистрировался

sergeyich
18.12.2009, 01:01
Есть несколько баз данных на dle, скажите как их соединить в одну базу, или добавить к уже существующей базе базу

mff
18.12.2009, 06:03
Доброе утро!

Подскажите пожалуйста, как выбрать из таблички количество тех записей, которых в ней больше всего, сравнивая по полю id_channel ? :confused: :confused: :confused:


id ip id_channel time

krypt3r
18.12.2009, 08:04
Навскидку

SELECT COUNT(*) FROM `sometable`
WHERE `id_channel` =
(SELECT `id_channel` FROM `sometable` ORDER BY `id_channel` DESC LIMIT 1)

либо

SELECT COUNT(*) FROM `sometable`
GROUP BY `id_channel`
ORDER BY `id_channel` DESC LIMIT 1;

mff
18.12.2009, 08:42
Есть табличка:
id ip id_channel time
1 70.88.31.247 613 1261099440
2 95.70.82.140 1016 1261099633
3 95.01.82.140 1016 1261099645
4 67.190.111.224 1388 1261099674
5 77.88.31.247 1315 1261099850
6 67.190.111.224 1502 1261099937
7 77.88.31.247 1715 1261099951
8 95.135.36.200 561 1261099988
9 77.88.30.247 1099 1261099995
10 90.71.02.140 1016 1261100724
11 95.71.82.140 1016 1261100731
Нужно выбрать из нее тот id_channel, который больше всего повторяется.

В нашем случае это 1016
Далее уже посчитать сколько раз повторяется.

krypt3r, Спасибо, но не работает :(

krypt3r
18.12.2009, 08:51
Я не так задание понял. Попробуйте так

SELECT COUNT(*) FROM `sometable`
GROUP BY `id_channel` ORDER BY 1 DESC LIMIT 1;

mff
18.12.2009, 08:54
Я не так задание понял. Попробуйте так

SELECT COUNT(*) FROM `sometable`
GROUP BY `id_channel` ORDER BY 1 DESC LIMIT 1;
Попробывал, но тоже не работает :(

$result = mysql_query("SELECT COUNT(*) FROM `table` GROUP BY `id_channel` ORDER BY 1 DESC LIMIT 1");
$row = mysql_fetch_array($result);
echo $row["id_channel"];
echo mysql_num_rows($result);

krypt3r
18.12.2009, 09:12
$result = mysql_query("SELECT COUNT(*) AS `c` FROM `table` GROUP BY `id_channel` ORDER BY 1 DESC LIMIT 1");
$row = mysql_fetch_array($result);
echo $row['c'];
echo mysql_num_rows($result);

mff
18.12.2009, 09:42
не, не хочет :((((

krypt3r
18.12.2009, 09:48
У меня все работает, обработайте возможные ошибки.

<?php
mysql_connect ('localhost', 'user', 'pass')
or die ("Connection failed\n");
if (mysql_select_db ('mybase')) {
$result = mysql_query ("SELECT COUNT(*) AS `c` FROM `sometable` GROUP BY `id_channel` ORDER BY 1 DESC LIMIT 1");
if ($result) {
$row = mysql_fetch_array ($result);
echo $row['c'], "\n";
echo mysql_num_rows ($result), "\n";
} else
echo "Query failed: " . mysql_error (), "\n";
} else
echo "Cannot select database\n";
mysql_close ();
?>

Выводит

4
1

mff
18.12.2009, 10:25
krypt3r, большое спасибо!

Вот так заработало всё:
$result = mysql_query("select count(id_channel), `id_channel` from `table` group by `id_channel` order by 1 desc limit 1");

sergeyich
18.12.2009, 14:04
А по моему вопросу никто не подскажет? Как соеденить несколько баз dle в одну?

mff
20.12.2009, 22:09
Подскажите, как добавить запись к уже существующей?

Pashkela
20.12.2009, 22:10
update, а вообще вопрос непонятен

mff
20.12.2009, 22:13
Pashkela есть в таблице поле channels равно оно "2,5,6,8,9"
Нужно к нему добавлять данные ",3,5,6,7,8"

Причем если есть такое число, то не записывать его :confused:

Pashkela
20.12.2009, 22:25
update `имя_таблицы` set channels = concat(channels, ",3,5,6,7,8") where .....

если есть такое же число то одним запросом вряд ли

felix_
21.12.2009, 03:09
почему

include("connect.php");
mysql_query("INSERT INTO `user` (`email`,`pass`) values ('email','pass')",$connection);

делает запись, а вот

include("connect.php");
function a() {
mysql_query("INSERT INTO `user` (`email`,`pass`) values ('email','pass')",$connection);
}
a;

а вот такое не делает запись в базу?
=================================
разобрался, надо так
include("connect.php");
function a($connection) {
mysql_query("INSERT INTO `user` (`email`,`pass`) values ('email','pass')",$connection);
}
a($connection);

krypt3r
21.12.2009, 07:50
function a() {
global $connection;
mysql_query("INSERT INTO `user` (`email`,`pass`) values ('email','pass')",$connection);
}

DarkMist
21.12.2009, 17:41
Решил изучить T-sql . С MySQL будет работать ???

krypt3r
21.12.2009, 17:45
Transact-SQL от MS? Частично. Функции в SELECT и WHERE разные

mff
22.12.2009, 01:04
Помогите с запросом, нужно из базы выбрать 20 строчек с наибольшим рейтингом и отсортировать по стане:
Побывал так:$result = mysql_query("SELECT * FROM `base` WHERE `show`='1' ORDER BY `rating` DESC, `country` ASC LIMIT 0, 20");не получилось :(

Pashkela
22.12.2009, 10:32
запрос правильный, только что у себя проверил, должен работать. В чем ошибка проявляется?

mff
22.12.2009, 13:22
Pashkela, запрос правильный, но он сортирует по большему рейтингу, 20 позиций, а потом полученное подсортировывает по стране.
То есть если есть 2 позиции
p1 с рейтингом 30 страна Англия
p2 срейтингом 40 страна Белорусь

этот запрос отсортирует так:
p2
p1

так как рейт больше. Но у p2 страна на букву "Б" и следовательно если я сортирую полученное по стране, то на букву "А" должно идти первым.

Нужно отобрать из базы 20 позиций с наибольшим рейтингом и отсортировать по стране сторого.

Я так понял нужно 2 запроса делать?

Спасибо!

Pashkela
22.12.2009, 13:36
так как рейт больше. Но у p2 страна на букву "Б" и следовательно если я сортирую полученное по стране, то на букву "А" должно идти первым.

тогда вопрос неправильно стоит, просто поменяй местами ORDER BY `rating` DESC, `country` ASC тут, т.е. первым должно идти `country` ASC, если тебе алфавит страны важнее

PS: Если опять не то, то да, два запроса тогда наверное, одновременно и рейтинг наибольший и сортировка так, как тебе надо - вряд ли

Gray_Wolf
22.12.2009, 14:04
Узнаёш 1-м запросом рейт 20-го и потом выводиш по алфавиту всех у кого рейт >= полученного...

mff
22.12.2009, 19:15
Узнаёш 1-м запросом рейт 20-го и потом выводиш по алфавиту всех у кого рейт >= полученного...Пробывал вот так извратиться них не вышло :(

$result = mysql_query("SELECT * FROM (mysql_query("SELECT * FROM `base_` WHERE `show`='1' ORDER BY `rating` DESC LIMIT 0, 20")) WHERE `show`='1' ORDER BY `country` ASC"); :confused:

Помогите :(

Pashkela
22.12.2009, 19:41
короче уже голову сломал, чо те надо:) Попробуй так:

select * from (select * from `base_` where `show`='1' ORDER BY `rating` DESC LIMIT 0, 20) as a ORDER BY `country` ASC

PS: Ибо второй раз писать where и limit смысла конечно нет

mff
22.12.2009, 20:23
короче уже голову сломал, чо те надо:) Попробуй так:

select * from (select * from `base_` where `show`='1' ORDER BY `rating` DESC LIMIT 0, 20) as a ORDER BY `country` ASC

PS: Ибо второй раз писать where и limit смысла конечно нет
Спс, почти оно :) Но вот СКРИН (http://s54.radikal.ru/i143/0912/9f/2d969fdcc38e.png), как то Страну коряво сортирнуло :confused:

Pashkela
22.12.2009, 20:35
покажи запрос на пыхе, плз

mff
22.12.2009, 22:17
if($so==3){$result = mysql_query("select * from (select * from `base_` where `show`='1' ORDER BY `rating` DESC LIMIT 0, 20) as a ORDER BY `country` ASC");} :)

mff
25.12.2009, 13:15
UP! Помогите плиз, ничего не выходит.
Помогите с запросом, нужно из базы выбрать 20 строчек с наибольшим рейтингом и полученное отсортировать по стане:
Побывал так:$result = mysql_query("SELECT * FROM `base` WHERE `show`='1' ORDER BY `rating` DESC, `country` ASC LIMIT 0, 20");не получилось :(

:confused:

krypt3r
25.12.2009, 13:59
mff, приведите пример, что вы хотите получить

mff
25.12.2009, 14:05
krypt3r, есть табличка:
id channel country rating views

Нужно выбрать 20 позиций с наибольшим рейтингом (rating) и полученное отсортировать по алфавиту по стране (country) :confused:

krypt3r
25.12.2009, 14:35
Это не полный пример. Приведите несколько записей из этой таблицы и результат, который вы хотите получить.

mff
25.12.2009, 15:18
krypt3r полез делать дамп и понял в чем дело! Спасибо! У меня страны в виде чисел хранились, а сами названия в другой табличке -)

krypt3r
25.12.2009, 15:41
^_^

Freakazoitt
25.12.2009, 18:13
как удалить в таблице ранние записи (время в хранится в ячейке t), оставив 30 последних?

mff
25.12.2009, 18:40
Ага теперь вот такой вопрос:

есть табличка:
CREATE TABLE `base` (
`id` int(10) unsigned NOT NULL auto_increment,
`channel` char(255) NOT NULL,
`country` char(255) NOT NULL,
`rating` int(10) NOT NULL,
`views` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

(1, 'Детский мир', '1', '0', '154' '1'),
(1, 'Детский мир2', '3', '0', '154' '6'),
(1, 'Детский мир3', '1', '0', '154' '12'),
(1, 'Детский мир4', '2', '0', '154' '77'),
(1, 'Детский мир5', '2', '0', '154' '1');
и
CREATE TABLE `country` (
`id` int(10) unsigned NOT NULL auto_increment,
`title_rus` char(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

(1, 'Албания'),
(2, 'Эстония'),
(3, 'Япония');

Задача та же, из базы base выбрать 20 строчек с наибольшим рейтингом(rating) и полученное отсортировать по стане(title_rus) :confused:

Помогите плиз :(

LStr1ke
26.12.2009, 17:09
Есть таблица blabla с полями id,title

Id | title
1 Первая
2 Вторая
3 Третья
4 Четвертая
5 Пятая

запрос: select * from blabla Покажет их все.
Мне же нужно вывести их все начиная с определенного id, чтобы нужный id выводился первым.
Чтото вроде на выходе должно получится.
(id = 4)
4 - Четвертая
1 - Первая
2 - Вторая
3 - Третья
5 - Пятая

LStr1ke
26.12.2009, 17:31
Короче ладно. 1 запросом не придумать чета.
Сделал так:
1 запросом вывожу по текущему id, воторым вывожу все что не равно этому id

Neoveneficus
26.12.2009, 21:02
Есть таблица blabla с полями id,title

запрос: select * from blabla Покажет их все.
Мне же нужно вывести их все начиная с определенного id, чтобы нужный id выводился первым.
Чтото вроде на выходе должно получится.
(id = 4)
4 - Четвертая
1 - Первая
2 - Вторая
3 - Третья
5 - Пятая

SELECT * FROM `table` WHERE id = '4' union SELECT * FROM `table` WHERE id != '4'

LStr1ke
26.12.2009, 21:12
Спасибо, то что нужно

bxN5
27.12.2009, 13:30
$del= mysql_query("DELETE FROM `ban` WHERE `cnt` > `maxcount`") or die("Invalid query: " . mysql_error()) ;
`cnt` and `maxcount`имена столбцов в базе которые содержат значения
дело в том что он удаляет как то совершенно рандомно и понятно только ему как он удаляет записи, причем условию они могут как соответствовать так и не соответствовать
или же
SELECT id FROM bann WHERE `cnt` >= `maxcount`
тоже возвращает рандомные айдишники =\

LStr1ke
27.12.2009, 14:34
А какие значения у cnt и maxcount

bxN5
27.12.2009, 15:27
интовые
http://img707.imageshack.us/img707/6206/97211870.jpg

Architek86
27.12.2009, 21:42
Даны две таблицы: tbl1 и tbl2.
tbl1: содержит id, name
tbl2: содержит id (которое связано с id предыдущей таблицы), work
Как выполнить select всех записей, что бы каждая возвращённая строка содержала id, name, work и причём без нарушения связи, т.е. work соответствовал id. Пробовал в where ставить условие tbl1.id = tbl2.id, но по-моему, что то не так.. И + надо отсортировать ответ по name, к примеру.

zavra
28.12.2009, 04:56
привет! наверняка многие играли в покер вконтакте, там каждый день дается по рандомной сумме голосов. я хочу для своей игры сделать тоже самое, т.е. создать bool колонку "получен ли дневной бонус". в 12 часов ночи он ставится на false, а как только игрок получает его, становится true. так вот вопрос: можно это сделать как-то настройками mysql, или каждый день надо запускать пхп-скрипт, который все бы отмечал на false?

krypt3r
28.12.2009, 07:55
Architek86

SELECT t1.id, t1.name, t2.work
FROM tbl1 t1
LEFT JOIN tbl2 t2 USING (id)
ORDER BY t1.name

Wakko
28.12.2009, 22:19
Помогите пожалуйста, есть таблица вида date|name
Колонка date содержит даты вида "2009-08-11 17:59:47",
Как построить запрос, чтобы выводить результаты допустим за последние 6 часов.

Wakko
28.12.2009, 23:08
Ответ нашёл сам. WHERE UNIX_TIMESTAMP(date) > НУЖНОЕ ВРЕМЯ в UNIX ФОРМАТЕ

FewG
29.12.2009, 02:36
Есть такой вопрос, имееться логин и пароль к бд, известен хост (ип-адрес), в бд я создаю пользователя (админа) со всеми правами:

GRANT ALL PRIVILEGES ON *.* TO USER@"%" IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

Пробую подключиться при помощи Navicat с другого компьютера, не работает. В чем может быть дело?

m0Hze
03.01.2010, 21:54
SELECT NAME_CONST((select password from users where id=1),1) FROM article WHERE id=1

Возвращает Incorrect arguments to NAME_CONST.
Если судить по статье квазара,то должен бы возвратить другую ошибку.
В чем загвоздка? Я так никогда и не освою этот метод sql-inj?( :(

vorona
04.01.2010, 16:26
CREATE TABLE `ocenki` (
`num` INT NOT NULL AUTO_INCREMENT ,
`art` INT NOT NULL ,
`user` VARCHAR NOT NULL ,
`oc` SMALLINT NOT NULL ,
PRIMARY KEY ( `num` ) ,
INDEX ( `art` )
)

Ответ MySQL:
#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 'NOT NULL, `oc` SMALLINT NOT NULL, PRIMARY KEY (`num`), INDEX (`art`))' at line 1

Что не так?

Pashkela
04.01.2010, 20:00
в этой строке:

`user` VARCHAR NOT NULL ,

нужно указать длину поля, т.е. например так:

`user` VARCHAR(20) NOT NULL ,

т.к. int и smallint имеют дефолтную длину, если такова не указана вручную, в отличие от VARCHAR

Nightmarе
05.01.2010, 12:48
Установил на сайт воблу, но забыл указать перфикс таблиц. Собственно, вручную их переименовывать реально жудко.
Может быть есть какой запрос на SQL, который ко всем таблицам припишет нужный мне перфикс???

Pashkela
05.01.2010, 16:51
Полно вариантов, особено в никсах, но мне по душе скриптом такие вещи делать - без предварительного дампа, без зависимости от системы и бла-бла-бла


<pre>
<?php
$dbname = 'instant'; # Имя БД
$prefix = 'vobla_'; # Желаемый префикс
$link = mysql_connect("localhost", "root", "root"); # Хост, юзер, пароль
$query = "SHOW TABLES FROM " . $dbname;
mysql_select_db($dbname);
$result = mysql_query($query,$link);
while ($table = mysql_fetch_array($result)) {
$new = mysql_query ("ALTER TABLE `" . $table[0]. "` RENAME `" . $prefix . $table['0'] . "`", $link);
print $table[0] . " ---> " . $prefix . $table['0'] . "\n";
}
mysql_close($link);
print "Замена произведена \n";
?>
</pre>


Скуль запросом чтобы такое сделать (одним) - хз

Pashkela
05.01.2010, 19:28
Или еще один способ, чисто через phpmyadmin, аналогов не видел:

1. phpmyadmin->выбираем БД->SQL
2. Выполняем такой запрос:

SELECT CONCAT(CONCAT('ALTER TABLE ', table_name),CONCAT(' RENAME ', CONCAT('pref_', table_name, ';'))) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='instant' LIMIT 0 , 100;

где "pref_" - нужный префикс, в LIMIT указываем кол-во таблиц для изменения, "instant" - имя БД, в которой мы хотим добавить префикс к таблицам. В результате получим текст sql-запроса, который останется только скопировать и выполнить:

http://i071.radikal.ru/1001/3e/1bd506f6a1a9t.jpg (http://radikal.ru/F/i071.radikal.ru/1001/3e/1bd506f6a1a9.jpg.html)

т.е. полученный текст копируем, опять лезем в SQL, вставляем, выполняем, всё.

PS: Можно вывести в файл и потом копировать оттуда

REBUUS
05.01.2010, 20:34
какой самый быстрый способ выбора последних n строк с таблице , в том же порядке в котором идут, длю удобства есть id (auto inc)

Pashkela
05.01.2010, 20:48
select * from table order by id DESC limit n,m

REBUUS
05.01.2010, 20:54
select * from table order by id DESC limit n,m

не так я уже делал, только один витаскивал, n-ий с конца

REBUUS
05.01.2010, 20:58
select * from table order by data limit $количество_записей-N ,$количество_записей

только вот такой вариант заработал как надо, но тут заранее еще надо и количество всех записей узнавать, хоте бы что бы без этого было

VDShark
06.01.2010, 01:30
SELECT * FROM
(SELECT *
FROM table
ORDER BY id DESC LIMIT 10) as x
ORDER BY id ASC

m0Hze
06.01.2010, 01:53
Имеем таблицу,в ней допустим:
id name vis num
+--------+---------+---------+---------+
| 1 hello 1 4 |
| 2 blabla 1 2 |
| 3 sexy 0 1 |
| 4 pew 1 9 |
+---------+---------+---------+--------+

$query = mysql_query("SELECT * FROM block WHERE vis = 1");

Так вот,хотелось бы получить результаты отсортированные по num, тоесть по возрастанию,от 1 к 9.Спасибо.

m0Hze
06.01.2010, 02:08
Имеем таблицу,в ней допустим:
id name vis num
+--------+---------+---------+---------+
| 1 hello 1 4 |
| 2 blabla 1 2 |
| 3 sexy 0 1 |
| 4 pew 1 9 |
+---------+---------+---------+--------+

$query = mysql_query("SELECT * FROM block WHERE vis = 1");

Так вот,хотелось бы получить результаты отсортированные по num, тоесть по возрастанию,от 1 к 9.Спасибо.
)) DESC,ASC :)

REBUUS
06.01.2010, 02:30
SELECT * FROM
(SELECT *
FROM table
ORDER BY id DESC LIMIT 10) as x
ORDER BY id ASC


да, вот этот вариант мне подходит, спасибо

REBUUS
06.01.2010, 02:33
Имеем таблицу,в ней допустим:
id name vis num
+--------+---------+---------+---------+
| 1 hello 1 4 |
| 2 blabla 1 2 |
| 3 sexy 0 1 |
| 4 pew 1 9 |
+---------+---------+---------+--------+

$query = mysql_query("SELECT * FROM block WHERE vis = 1");

Так вот,хотелось бы получить результаты отсортированные по num, тоесть по возрастанию,от 1 к 9.Спасибо.

$query = mysql_query("SELECT * FROM block WHERE vis = 1 order by num");

Byrger
06.01.2010, 18:18
Открываю таблицу MySQL через Navicat сортировка верная
А когда делаю запрос типа
SELECT * FROM items WHERE name='Капуста'
Сортировка выводится снизу вверх

Пробовал ORDER BY id не помогает (id одинаковы)

Pashkela
06.01.2010, 18:42
2 Byrger:

Отличный вопрос, осталось выяснить только, сортировка по какому полю требуется.

PS: Ппц, понимаю, праздники

Byrger
06.01.2010, 18:45
2 Byrger:

Отличный вопрос, осталось выяснить только, сортировка по какому полю требуется.

PS: Ппц, понимаю, праздники

В том то и дело что там нет видимой сортировки.
Если открыть через Navicat то как нужно выводит
А вот когда напрямую делаю то не гуд

Pashkela
06.01.2010, 18:57
то как нужно выводит

соберись с мыслями

Byrger
07.01.2010, 22:26
Есть таблица с итемами из игры
Есть колонка grade которая может принимать значения s84,s80,s,a,b,c,d,none

Как прописать запрос чтоб таблица сортировалась по grade именно в том порядке который я написал?

warlok
08.01.2010, 09:07
Есть таблица с первой колонкой ID, как можно узнать самый большой id в данный момент ? т.е. например есть 3 записи в таблице со значениями ID 1,2,3 нужно чтоб выдал самый большой и вывел его.

Byrger
08.01.2010, 10:24
Есть таблица с первой колонкой ID, как можно узнать самый большой id в данный момент ? т.е. например есть 3 записи в таблице со значениями ID 1,2,3 нужно чтоб выдал самый большой и вывел его.

SELECT * FROM table WHERE id=(SELECT max(id) FROM table)

Gifts
08.01.2010, 15:08
warlok select max(id) from table;

Ponchik
08.01.2010, 19:51
Нуко подскажите мне, как строки клеить
SELECT 'pewpew'+'123'
выводит "123" он складывает =\ а как клеить?

Pashkela
08.01.2010, 19:57
concat('pewpew','123')

PS: С новым годом, булк )

Ponchik
08.01.2010, 20:04
да нет... я скулю кручу
SELECT 'pewpew'sql_inj
приходится +ord(substring((SELECT table_name FROM information_schema.tables LIMIT 17,1),1,1))
Мнеб побыстрее какнить :)

Pashkela
08.01.2010, 20:06
не, без ссылки я пас, телепортиратор после НГ сломался

Ponchik
08.01.2010, 20:09
Я уже понел, что там 1 табла и делать там нечего :o
pastebin.ru
пиши
<?php
?>
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaa'+ord(substring((SELE CT table_name FROM information_schema.tables LIMIT 17,1),1,1)),1);#
из строки aaa... удали пробел
и из "SELE CT"

ReduKToR
09.01.2010, 09:19
Вообщем,есть такой вопросик...Сейчас дописываю форум к своему блог проекту,и возникла такая проблема....Как же выводить данные об авторе поста\темы.
Как бы при написании темы\сообщения в табличку записывается только ник автора.
а нужно выводить еще данные о дате регистрации и т.д

Причем содержится все это в разных таблицах

Gifts
09.01.2010, 16:05
ReduKToR SELECT * FROM table1 INNER JOIN table2 WHERE table1.nick=table2.nick

vladan
09.01.2010, 20:18
ReduKToR SELECT * FROM table1 INNER JOIN table2 WHERE table1.nick=table2.nick
Подскажи как переделать такой mysql запрос, чтобы он возвращал не 1, а данные

SELECT `namesite` FROM `users` WHERE `name` LIKE '$domen' LIMIT 0 , 30

Gifts
09.01.2010, 20:29
Byrger Сортировка для БД линейки. crystal_type - соответствующее поле. Но лучше так не делать часто, а использовать например UNION

select * from armor order by field(crystal_type, 'none','d', 'c', 'b', 'a', 's', 's80', 's84');


vladan Мало данных для ответа. Возможно вы хотели: Select * from `users` и т.д.

vladan
09.01.2010, 20:36
vladan Мало данных для ответа. Возможно вы хотели: Select * from `users` и т.д.
База выглядит так (http://s19.radikal.ru/i192/1001/67/78bd5988d989.jpg) . Нужно если $domen найден в графе name показать namesite этой строки.

Gifts
09.01.2010, 20:46
vladan А что, собственно не работает? Покажите код, в который вы вставляете запрос и как выводите результат

vladan
09.01.2010, 20:51
vladan А что, собственно не работает? Покажите код, в который вы вставляете запрос и как выводите результат
Работаю через perl. Модуль DBI.

my $namesite = $dbh->do("SELECT `namesite` FROM `users` WHERE `name` LIKE '$domen' LIMIT 0 , 30");
print "$namesite";
Получаю 1

Byrger
09.01.2010, 20:56
Byrger Сортировка для БД линейки. crystal_type - соответствующее поле. Но лучше так не делать часто, а использовать например UNION

select * from armor order by field(crystal_type, 'none','d', 'c', 'b', 'a', 's', 's80', 's84');


vladan Мало данных для ответа. Возможно вы хотели: Select * from `users` и т.д.
SQL-Error: Column 'crystal_type' in order clause is ambiguous

Большой джо
10.01.2010, 19:17
Создаю запрос SELECT * FROM `top` ORDER BY `host` DESC Запрос должен выводить отсортированную таблицу, а выводит полный произвол! в чём ошибка?

phpdreamer
10.01.2010, 19:48
какой тип данных?

Большой джо
10.01.2010, 19:48
Числа, int

REBUUS
10.01.2010, 22:41
Числа, int

это в поле host у тебя числа ? :confused:



и свой вопрос, как через GET передать ссылку? что то просто так не передает :mad: ссылки ютуба , хотя это не имеет значение

Большой джо
11.01.2010, 00:13
это в поле host у тебя числа ? :confused:
Да, я же ответил)

REBUUS
11.01.2010, 01:02
Да, я же ответил)

тогда они у тебя в обратном порядки идти , убери DESC

Большой джо
11.01.2010, 18:49
тогда они у тебя в обратном порядки идти , убери DESC
Неа, всё равно) Проблему решил немного иначе!

vorona
13.01.2010, 20:00
$sql = 'INSERT INTO `users` (`id`, `login`, `pass`, `date`, `enter`, `comm`, `balls`, `rating`, `status`, `name`, `sname`, `bday`, `cou`, `city`, `mail`, `icq`, `about`, `ban`, `mystatus`, `ava`) VALUES ("", "'.$_POST['login'].'", "'.$md5.'", NOW(), NOW(), "0", "0", "0", "u", "'.$_POST['name'].'", "'.$_POST['sname'].'", "'.$_POST['date'].'", "'.$_POST['cou'].'", "'.$_POST['city'].'", "'.$_POST['mail'].'", "'.$_POST['icq'].'", "'.$_POST['about'].'", "0", "", "")';


$r=mysql_query($sql,$conn) or die ("err");

Почему выбивает err?

$sql = 'INSERT INTO `mails` (`id`, `login`, `mail`) VALUES ("", "'.$_POST['login'].'", "'.$_POST['mail'].'")';


$r=mysql_query($sql,$conn) or die ("err2");

А здесь не выбевает? Кода одинаковые, кроме того, что в первом больше параметров.

krypt3r
13.01.2010, 22:58
Как насчет текста ошибки?

mysql_query (...) or die (mysql_error ());

REBUUS
13.01.2010, 23:46
все свою проблему решил :)

REBUUS
13.01.2010, 23:47
$sql = 'INSERT INTO `users` (`id`, `login`, `pass`, `date`, `enter`, `comm`, `balls`, `rating`, `status`, `name`, `sname`, `bday`, `cou`, `city`, `mail`, `icq`, `about`, `ban`, `mystatus`, `ava`) VALUES ("", "'.$_POST['login'].'", "'.$md5.'", NOW(), NOW(), "0", "0", "0", "u", "'.$_POST['name'].'", "'.$_POST['sname'].'", "'.$_POST['date'].'", "'.$_POST['cou'].'", "'.$_POST['city'].'", "'.$_POST['mail'].'", "'.$_POST['icq'].'", "'.$_POST['about'].'", "0", "", "")';


$r=mysql_query($sql,$conn) or die ("err");

Почему выбивает err?

$sql = 'INSERT INTO `mails` (`id`, `login`, `mail`) VALUES ("", "'.$_POST['login'].'", "'.$_POST['mail'].'")';


$r=mysql_query($sql,$conn) or die ("err2");

А здесь не выбевает? Кода одинаковые, кроме того, что в первом больше параметров.


с кавычками наверно проблема, попробуй " заменить на ' и наоборот. имею в виду писать
$sql = " и тут уже запрос и где ты раньше хотел кавычки ставить ставь ' ";

felix_
14.01.2010, 01:35
есть база
id,name
1 aa
2 bb
3 cc
4 dd
5 ee
как сделать в одном запросе выборку 3 строк с нужными id, например 1,2,5 ?

Pashkela
14.01.2010, 09:31
SELECT * FROM `имя_базы` WHERE id = 1 or id = 2 or id = 5

krypt3r
14.01.2010, 10:17
... WHERE `id` IN (1, 2, 3);

;)