[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Соединение таблиц в mysql_query()
lovetolaugh
Всем добрый день. Имеется следующая строчка кода, которая соединяет две таблицы по полю id.

$result = mysql_query("select * from `students` inner join `stip` on `students.id` = `stip.id` where `stip.sr_ball` >= '{$dano}'");


Но при выполнении возникает следующая ошибка:

Unknown column 'stip.sr_ball' in 'where clause'

Ксати, поле sr_ball в Denrew'е имеет тип DOUBLE, а значение переменной $dano вводится в браузере. В этом месте поле sr_ball и $dano сравниваются:

where `stip.sr_ball` >= '{$dano}'");


Возможно ли их сравнивать? Я так понимаю, то что мы вводим в браузере имеет тип char?... Т.е. $dano надо преобразовывать?...



Спустя 1 минута, 56 секунд (5.06.2011 - 16:51) lovetolaugh написал(а):
И еще: когда надо обратится к полю таблицы, нужно ли это выражение заключать в косые кавычки (как я и сделал в этом примере)?

Спустя 25 минут, 17 секунд (5.06.2011 - 17:16) waldicom написал(а):
Попробуйте название таблиц и полей брать в отдельные кавычки. Что-то типа
`stip`.`sr_ball` вместо `stip.sr_ball`

Спустя 6 минут, 3 секунды (5.06.2011 - 17:22) lovetolaugh написал(а):
waldicom

Ух ты... все работает. благодарю!

Спустя 53 секунды (5.06.2011 - 17:23) Игорь_Vasinsky написал(а):
Цитата
Unknown column 'stip.sr_ball' in 'where clause'

нет поля stip.sr_ball в таблице

Цитата
Возможно ли их сравнивать?

нет, нужно приводить к одному типу, вводится и поступать будут либо string(VARCHAR) либо integer (INT)

Спустя 4 минуты, 46 секунд (5.06.2011 - 17:28) lovetolaugh написал(а):
Игорь_Vasinsky

Т.е. введенное в браузере значение надо перевести в тип DOUBLE? Не подскажите какую функцию надо использовать...

И еще: в Denwer после заполнения таблицы значения поля sr_ball почему-то потеряли дробную часть (ее я указывал после запятой)...
Кстати, то что я ввел в браузере получается тоже имеет только целую часть... Т.к. если я ввожу скажем 4,5 - то он выведет все результаты в которых есть значение >= 4


Короче почему-то утеряны значения после запятой.... но в целом работает верно...

Спустя 6 минут, 25 секунд (5.06.2011 - 17:34) lovetolaugh написал(а):
Может десятичную часть надо после точки указывать?

Спустя 2 минуты, 32 секунды (5.06.2011 - 17:37) Игорь_Vasinsky написал(а):
а если юзер ввел "Я вася пупкин" ???
тебе нужно проверять чтоб это было duble, а потом ещё на всяк случяй приводить тип DUBLE, это самое начало изучения Php - типы php, какая функция....

Цитата
почему-то потеряли дробную часть


ну тык мускул наверно не понял что ты хочешь в него вставить`.

Пример, у меня есть поле `number` INT(11) - я (юзер) забиваю туда данные, например $number = 1213 - а я возму и проверю, вдруг он туда не число пишет:

if((int)$number)
{
//пишу её в БД
}

Теперь если введённые данные на те - я даже не буду запрос в БД посылать.
.то был пример для INTEGER.

Спустя 18 минут, 33 секунды (5.06.2011 - 17:55) lovetolaugh написал(а):
А можно ли выполнить приведение типов в запросе? Или например я хочу вывести значение поля таблицы, которые имеет числовой тип?

Спустя 5 минут, 53 секунды (5.06.2011 - 18:01) Игорь_Vasinsky написал(а):
ЧТобы отправить запрос - тебе нужно получить переменную - которую ты туда пошлёшь, следовательно, после того как переменная принята - ты можешь делать с ней что угодно, а потом спокойненько и без страха - формировать запрос - и посылать в БД.

Спустя 19 минут, 23 секунды (5.06.2011 - 18:20) lovetolaugh написал(а):
Игорь_Vasinsky

В общем я сейчас пересоздал таблицу в БД - и десятичную часть отделял точкой - все работает нормально и без приведения. Но я не могу вывести значение поля таблицы, которое имеет тип double! Вот фрагмент (не выводится значение sr_ball):

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("ID: %s Фамилия: %s Средний балл<br>", $row['id'], $row['fam'], $row[(string)'sr_ball']);}

Спустя 3 минуты, 29 секунд (5.06.2011 - 18:24) lovetolaugh написал(а):
В общем все работает. Спасибо.

Спустя 4 минуты, 50 секунд (5.06.2011 - 18:29) Игорь_Vasinsky написал(а):
$row[(string)'sr_ball']);}

вот совершенно незачем приводить тип данным из БД, они у тебя уже в нужном виде должны туда писаться ;)
и тем более не так а так

(string)$row['sr_ball']);
, это на будущее ;)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.