[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Целое число int в запросе.
Renden
Привет, ребят что-то странно, мне сказали что если я числовую переменную приведу к типу (int), то можно уже не делать никаких mysql_real_escape_string однако, если я подставлю кавычку в адресе, sql ругнется(

$id = (int)$_GET['id']?$_GET['id']:null;
$query = mysql_query("SELECT * FROM `test` WHERE id='.$id.'");

Однако если я в самом запросе подставлю WHERE id='.(int)$id.' то вроде все ок.
Собственно вопрос я же вроде как в 1 строке сказал php что переменная $id - целое число, разьве нет?



Спустя 10 минут, 55 секунд (22.03.2011 - 12:02) sharki написал(а):
Renden
Приводить надо к целочисленному значению прямо в запросе или
$id = isset($_GET['id']) ? (int)$_GET['id'] : null;

Спустя 3 часа, 10 минут, 55 секунд (22.03.2011 - 15:13) inpost написал(а):
Renden
$id = (int)$_GET['id']?$_GET['id']:null;
Переводим в лёгкий вид:
if(isset((int)$_GET['id'])) // true?
$id = $_GET['id'];
else
$id = null;

Понимаешь, что ты не там, где надо поставил int?
Вопрос теперь №2, если ты нигде более на странице не будешь использовать переменную, то работай непосредственно в запросе: `id`=".(int)$_GET['id']." , не за чем забивать 1 ячейку памяти одной лишней переменной.

Спустя 2 минуты, 16 секунд (22.03.2011 - 15:15) Snus написал(а):
inpost
Интересная формулировка "забивать 1 ячейку памяти" smile.gif Расшифруй, пожалуйста smile.gif

Спустя 7 минут, 40 секунд (22.03.2011 - 15:23) neadekvat написал(а):
Цитата (Snus @ 22.03.2011 - 15:15)
Интересная формулировка "забивать 1 ячейку памяти"Расшифруй, пожалуйста

Каждая переменная занимает свое место в оперативной памяти.
Ввели переменную - значит, откусили какое-то пространство из памяти.
В языках со строгой типизации, если я не ошибаюсь, место под переменную занимается сразу, фиксированное. Как это происходит в php - точно не знаю. Правда, если учесть, что он написан на Си - языке со строгой типизацией.. То понятнее не становится.

Спустя 30 минут, 55 секунд (22.03.2011 - 15:54) inpost написал(а):
Snus
Уже ответили за меня, но скажу, это лишь абстрактное представление "ячейка памяти".

Спустя 18 часов, 15 минут, 25 секунд (23.03.2011 - 10:09) linker написал(а):
Если вам нужно целочисленное, то какого фига используется null?
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

Спустя 24 минуты, 47 секунд (23.03.2011 - 10:34) uWeb написал(а):
$id = isset($_GET['id']) ? +$_GET['id'] : 0;

Спустя 1 минута, 35 секунд (23.03.2011 - 10:36) Zerstoren написал(а):
Если для языков типа C,C++,PHP,Python
0 == null //true
но
0 !==null //true

то для Mysql 0 != null

скажем так.

если в базе указано значение NULL
то условие должно выглядеть так
WHERE id IS NULL

вот в общем.

ЗЫ uWeb. Что за плюс такой?

Спустя 44 минуты, 28 секунд (23.03.2011 - 11:20) Renden написал(а):
Спасибо всем, особенно inpost-у теперь стало намного понятнее.
Быстрый ответ:

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