Ru-Board.club
← Вернуться в раздел «Web-программирование»

» MySql/PHP: общие вопросы

Автор: TTwice
Дата сообщения: 23.09.2005 00:35
Cheery
Переделать нет возможности... Ладно спасиб большое. Пойду мучатся. Возник в голове вариант с промежуточной таблицей

Автор: SiMM
Дата сообщения: 23.09.2005 06:30

Код: SELECT t1.id AS id,t2.name AS parrent_name, t1.link AS link, t1.name AS name
FROM test t1 LEFT JOIN test t2 ON t1.pid = t2.id
Автор: Morgul
Дата сообщения: 14.11.2005 01:27
что-бы не создавать новую тему напишу здесь.

Устанвил скрипт WebDate у себя на сервере. При вводе где-нибудь с использованием знака ' выдает ошибку "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"

Например при регистрации пользователя пишу имя ni'c'k а он выдает такое

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 'c'k', gender = 'Male', age = '6', country = '

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

Причем на компе все нормально хоть сто таких ' добавляй, а установив на своем сервере в инете вот такое.
Автор: Advanced_Guest
Дата сообщения: 14.11.2005 01:45
вообще - не советую использовать этот скрипт.

Ибо 99.9999% что в нём есть другие баги.

Если же ты хочешь быстрого решения (но сразу скажу - неправильного)

то включи magiq_quotes через настройки php
Автор: edogs
Дата сообщения: 14.11.2005 02:01
Advanced_Guest

Цитата:
Если же ты хочешь быстрого решения (но сразу скажу - неправильного)

то включи magiq_quotes через настройки php

Оно не столько неправильное, сколько неопределённой надежности.
Автор: Morgul
Дата сообщения: 21.11.2005 18:31
Спасибо, помогло

Есть еще одна проблема....

Из 219 данных в таблице показываются только 135. А в скрипте из 219 профилей пользователей показывается так-же 135 хоть и написано что всего 219. В чем может быть дело?
Автор: SiMM
Дата сообщения: 21.11.2005 19:19

Цитата:
В чем может быть дело?
PHP FAQ: Ничего не работает! Что делать???
Автор: FreeStyler
Дата сообщения: 27.03.2008 22:26
Как создать таблицу MySQL, в каждой строке которой переменное число элементов? Например 10 жестко заданных столбцов, а кол-во остальных может изменяться от 0 до 100 (все типа INT). может, как-то занести в ячейку массив можно?
Автор: Cheery
Дата сообщения: 27.03.2008 22:31
FreeStyler

Цитата:
как-то занести в ячейку массив можно?

можно.. читайте про serialize
вот только искать по этому уже будет сложно
Автор: FreeStyler
Дата сообщения: 27.03.2008 23:04
serialize - это PHP? В MySQL ничего стандартного для этого нет? Я на Perl'e пишу
Автор: Cheery
Дата сообщения: 27.03.2008 23:09
FreeStyler

Цитата:
В MySQL ничего стандартного для этого нет?

нету.

Цитата:
Я на Perl'e пишу

тогда чего задаете вопросы в этой теме?
Автор: DarkSmoke
Дата сообщения: 30.03.2008 12:03
Пишу движок для сайта поиска работы.
Когда создавал БД, читал умную книгу, и в ней было написано, что index используется для быстрого поиска в БД. Создал по этому принципу таблицу:

Код:
CREATE TABLE `vacancyadd` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`razdel` VARCHAR( 2 ) NOT NULL ,
`spec` VARCHAR( 50 ) ,
`obraz` VARCHAR( 1 ) NOT NULL ,
`sex` VARCHAR( 1 ) NOT NULL ,
`goroda` VARCHAR( 2 ) NOT NULL ,
`grafik` VARCHAR( 20 ) NOT NULL ,
`zarplata` VARCHAR( 5 ) NOT NULL ,
`info` TEXT,
`lico` VARCHAR( 50 ) ,
`tel` VARCHAR( 50 ) ,
`email` VARCHAR( 50 ) ,
`srok` VARCHAR( 1 ) NOT NULL ,
`date` DATE NOT NULL ,
PRIMARY KEY ( `id` ) ,
INDEX ( `razdel` , `spec` , `goroda` , `grafik` )
);
Автор: Cheery
Дата сообщения: 30.03.2008 20:52
DarkSmoke

Цитата:
Вопрос: я правильно все понял и реализовал это?

ЭТО - что?
Автор: DarkSmoke
Дата сообщения: 30.03.2008 23:13
это я вывел таблицу.
Таблица предназначена для занесения информации о вакансиях.
Автор: Cheery
Дата сообщения: 30.03.2008 23:21
DarkSmoke

Цитата:
это я вывел таблицу.

я знаю, что это..
ну создал, и? если mysql не ругнулся, то все в порядке.. а примеров подобных просто до кучи и на самом сайте mysql
http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html
Автор: DarkSmoke
Дата сообщения: 31.03.2008 00:25
я к тому что:
я планирую делать поиск по
Цитата:
`razdel` , `spec` , `goroda` , `grafik`

и я им поставил значение index
Это правильно?
Автор: Cheery
Дата сообщения: 31.03.2008 00:27
DarkSmoke

Цитата:
Это правильно?

ну дал же ссылки.. либо так, либо без `
Автор: andead
Дата сообщения: 31.03.2008 00:42
вместо VARCHAR( 1 ) и VARCHAR( 2 ) (да и вообще вместо полей где будут хранится только цифры) лучше использовать TINYINT( 1 ), TINYINT( 2 ) и INT ( какой_то_размер ) соответственно
+ у всех полей прописать NOT NULL
Автор: myxa0
Дата сообщения: 01.04.2008 09:41
Помогите с SQL.

Нужно найти значения поля ID из одной таблици, которых нет в другой в поле ID.



Код:
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;

--
-- Dumping data for table `test`
--

INSERT INTO `test` VALUES (1, 'Вася');
INSERT INTO `test` VALUES (2, 'Петя');
INSERT INTO `test` VALUES (5, 'Гидерон');
INSERT INTO `test` VALUES (1, 'Петя');
INSERT INTO `test` VALUES (3, 'Сидор');
INSERT INTO `test` VALUES (4, 'Ашот');

CREATE TABLE `test1` (
`id` int(11) NOT NULL auto_increment,
`name1` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;

--
-- Dumping data for table `test1`
--

INSERT INTO `test1` VALUES (1, 'Иванов');
INSERT INTO `test1` VALUES (2, 'Петров');
INSERT INTO `test1` VALUES (3, 'Сидоров');
Автор: Brodyaga
Дата сообщения: 01.04.2008 15:14
Я же уже показывал пример с вложеннным запросом.
SELECT * FROM `test` WHERE (SELECT COUNT(*) FROM `test1` WHERE `test1`.`id`=`test`.`id`)=0
Автор: Mamay
Дата сообщения: 01.04.2008 16:02
myxa0
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`),
гы
на будущее - auto_increment не может повторятся
Автор: roddik
Дата сообщения: 20.04.2008 14:29
Привет! Есть ли в mysql аналог пхпшной ф-и implode? Спасибо!
Автор: zerkms
Дата сообщения: 20.04.2008 14:34
roddik
а что именно имплодить? есть GROUP_CONCAT()
Автор: roddik
Дата сообщения: 20.04.2008 16:33
zerkms
например из таблицы
значение
1
2
3
достать '1, 2, 3'

Добавлено:
zerkms
спасибо большое, работает
SELECT GROUP_CONCAT( `name` )
FROM `g_fields`
Автор: myxa0
Дата сообщения: 21.04.2008 07:14
Как можно проверить наличае многих значений в БД как можно быстрее?

Это нужно для решения следующей задачи:
Есть база данных, в которой есть названия файлов.
Нужно показать все файлы в определенной папке на сервере, которых нет в базе.
Сделано так:


Код:
$handle=opendir($dir);

while ($file = readdir($handle))
{

$res = mysql_query ("SELECT `id` FROM `files` WHERE `file`='".$file."'");
if (mysql_num_rows($res)==0)
{

$f["files"][]=$file;
    
}
}
Автор: zerkms
Дата сообщения: 21.04.2008 08:49
myxa0
выбрать в массив все файлы, затем искать в базе по NOT IN ()
Автор: myxa0
Дата сообщения: 21.04.2008 09:47
Я сделал наоборот.
Выбрал все записи из базы в массив и далее в цикле по in_array смотрел есть ли файлы в этом массиве.
В общем запросов к базе в тысячи раз меньше в следствии чего страница грузится менее одной секунды против прошлых 24 секунд.

Но сразу возникает вопрос: на сколько большой массив можно создать средствами php?
Пока количество записей равно 3389, но их будет в десятки, сотни раз больше.
Потянет ли php? Или дело здесь в серваке?
Автор: zerkms
Дата сообщения: 21.04.2008 10:01
зачем делать наоборот, если в базе у тебя выборка больше, чем список файлов???
тем более что говоришь что в базе число записей увеличится
переделай как я тебе сказал и не парься о производительности
ps: надеюсь что на поле file индекс есть?
Автор: myxa0
Дата сообщения: 22.04.2008 01:43
Тогда вопрос: как передать в запрос массив, созданный в php?
Автор: Cheery
Дата сообщения: 22.04.2008 01:51
myxa0

Цитата:
Тогда вопрос: как передать в запрос массив, созданный в php?

вам же указали, что нужно делать.
прочитайте про NOT IN(file1,file2,file3,...)
вот и формируете содержимое в IN(..)
хоть циклом, хоть через join

Страницы: 12345678910111213

Предыдущая тема: PHP: лимит времени на выполнение скрипта


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.