Какое значение Mysqli для bind_param() i или s
Я использую Mysqli bind_param, когда я вставляю вещи в свою БД.
Когда я попытался вставить номер телефона как "0737327373", значение было вставлено как "737327373" без начального "0". Но когда я изменил bind_param("i") на bind_param("s"), вместо этого значение было правильно вставлено как "0737327373". Так должен ли я использовать "s" вместо "i", когда я вставляю числа с начальным 0 в нем?
Кроме того, у меня есть значение, которое может быть где-то между (0-5) и (0-1) в зависимости от того, какие флажки / флажки пользователь проверяет во время регистрации.
Должны ли эти значения также быть вставлены как bind_param("s"), поскольку они также могут быть "0".
Извините, если это кажется немного грязным, я постараюсь объяснить это лучше, если это необходимо.
Английский не моя первая слабость, и я пока не очень понял функцию bind_param s/i, я думал, что "0" будет считаться как int, а не как строка.
Заранее спасибо.
1 ответ
Если вы вставляете "число" в поле varchar, тогда да, используйте "s".
В вашем случае нет смысла вставлять номер телефона в виде целого числа, так как вы, вероятно, не будете выполнять какой-либо математический анализ и теряете функциональность (например, ведущие нули).
Вы должны использовать bind_param("s", $phoneNumber)
99% времени. Другие типы существуют только в исключительных ситуациях, когда правильный тип необходим для работы запроса.
Важно: Тип привязки должен определяться типом столбца / операнда в SQL, а не имеющимися у вас данными. Не имеет значения, является ли ваше значение числом или строкой, важно то, в каком контексте оно используется в SQL.
В вашей ситуации вы утверждаете, что ваш номер телефона начинается с нуля, но целое число не может начинаться с нуля, если оно само не является нулем. Математически это неправильно. Номера телефонов не целые! Это струны. Вы должны сохранить номер телефона вVARCHAR
столбец в вашей базе данных.