I am curious about the disadvantage of quoting integers in MYSQL queries
For example
SELECT col1,col2,col3 FROM table WHERE col1='3';
VS
SELECT col1,col2,col3 FROM table WHERE col1= 3;
If there is a performance cost, what is the size of it and why does it occur? Are there any other disavantages other that performance?
Thanks Андрей
Редактировать: Причина этого вопроса
1. Потому что я хочу узнать разницу, потому что мне любопытно
2. Я экспериментирую со способом передачи составных ключей из моей базы данных в моем php-коде как psudo-Id-keys (PIK). Эти PIK используются для нацеливания записи.
Например, с учетом первичного ключа (AreaCode, Category, RecordDtm)
Мой PIK в URL-адресе будет выглядеть так:
index.php?action=hello&Id=20001,trvl,2010:10:10 17:10:45
И я бы выбрал эту запись следующим образом:
$Id = $_POST['Id'];//equals 20001,trvl,2010:10:10 17:10:45
$sql = "SELECT AreaCode,Category,RecordDtm,OtherColumns.... FROM table WHERE (AreaCode,Category,RecordDtm) = ({$Id});
$mysqli->query($sql):
......and so on.
На этом этапе запрос не будет работают из-за даты и времени (которые должны быть указаны в кавычках) и открыты для внедрения sql, потому что я не избежал этих значений. Учитывая тот факт, что я не всегда буду знать, как построены мои PIK, я бы написал функцию, разделяющую Id PIK на запятые, очищающую каждую часть с помощью real_escape_string и возвращающую ее вместе с указанными значениями. Например: $ Id = "'20001', 'trvl', '2010: 10: 10 17:10:45'" Конечно, в этой функции, которая разбивается на части и очищает идентификатор, я мог бы проверить, является ли значение числом или нет. Если это число, не цитируйте его. Если это не строка, укажите ее в кавычках.