$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`
`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
Короче почему-то утеряны значения после запятой.... но в целом работает верно...
Т.е. введенное в браузере значение надо перевести в тип 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, какая функция....
тебе нужно проверять чтоб это было 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):
В общем я сейчас пересоздал таблицу в БД - и десятичную часть отделял точкой - все работает нормально и без приведения. Но я не могу вывести значение поля таблицы, которое имеет тип 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']);, это на будущее ;)