Используя эту функцию PHP mysql_escape_string()
, вы можете быстро получить хорошую профилактику.
Например:
SELECT * FROM users WHERE name = '".mysql_escape_string($name_from_html_form)."'
mysql_escape_string
- Сбрасывает строку для использования в mysql_query
Для большей профилактики вы можете добавить в конце ...
wHERE 1=1 or LIMIT 1
Наконец вы получаете:
SELECT * FROM users WHERE name = '".mysql_escape_string($name_from_html_form)."' LIMIT 1
Добавление к тому, что Jonathan Leffler и Paul Fisher сказали
, Если Вы когда-нибудь ожидаете иметь почтовые адреса для Канады или Мексики, добавленной к Вашим требованиям, храня postal-code
как строка, является необходимостью. Канада имеет алфавитно-цифровые индексы, и я не помню то, на что Мексику похожи первое, что пришло на ум.
Где "компромисс" в хранении ZIP как ЧИСЛО или VARCHAR? Это - просто выбор - это не компромисс, если нет преимущества для обоих, и необходимо бросить некоторые преимущества для получения других.
, Если сумма zip не имеет значения вообще, Zip, поскольку число не полезно.
Если Вы не собираетесь сделать математику на уличных числах или zip / индексы, Вы просто приглашаете будущую боль путем хранения их как численных данных.
Вы могли бы сохранить несколько байтов тут и там, и возможно получить более быстрый индекс, но что делает Вас, когда почтовые США, или безотносительно другой страны, с которой Вы имеете дело, решает вводить альфы в коды?
стоимость дискового пространства будет намного более дешевой, чем стоимость фиксации его позже... двухтысячный год кто-либо?
Необходимо определенно рассмотреть номер дома хранения как символьное поле, а не число, из-за особых случаев, таких как "получисла", или мой текущий адрес, который является чем-то как "129 А" — кроме A, не рассматривают как число квартиры для услуг по доставке.
Как 'международный' пользователь, нет ничего более расстраивающего, чем контакт с веб-сайтом, который ориентирован только вокруг адресов американского формата. Это немного грубо сначала, но становится серьезной проблемой, когда проверка также фанатична.
, Если Вы обеспокоены движением глобального, единственный совет, я имею, должен сохранить вещи свободной формой. Разные страны имеют различные соглашения - в некоторых, номер дома прибывает перед названием улицы в некоторых он прибывает после. У некоторых есть состояния, некоторые регионы, некоторые округа, некоторые комбинации тех. Здесь в Великобритании, индекс не является индексом, это - почтовый индекс, содержащий и буквы и числа.
я советовал бы просто ~10 строкам строк переменной длины, вместе с отдельным полем для почтового индекса (и осторожны, как Вы описываете что справиться с национальной чувствительностью). Позвольте пользователю/клиенту решить, как записать их адреса.
Необходимо, конечно, консультироваться" , это хороший способ смоделировать адресную информацию в реляционной базе данных ", но вопросом не является прямой дубликат этого.
существует, конечно, много существующих ранее ответов (проверьте модели данных в качестве примера в DatabaseAnswers, например). Многие существующие ранее ответы являются дефектными при некоторых обстоятельствах (не выбирающий Ответы DB вообще).
Одной главной проблемой для рассмотрения является объем адресов. Если Ваша база данных должна иметь дело с международными адресами, необходимо быть более гибкими, чем если бы только необходимо иметь дело с адресами в одной стране.
, По моему мнению, это часто (который не означает всегда ), разумный, чтобы и записать 'изображение адресного ярлыка' адреса и отдельно проанализировать содержание. Это позволяет Вам иметь дело с различиями между размещением индексов, например, между разными странами. Несомненно, можно записать анализатор и средство форматирования, которые обрабатывают эксцентриситеты разных стран (например, американские адреса имеют 2 или 3 строки; в отличие от этого, британские адреса могут иметь значительно больше; один адрес, в который я пишу периодически, имеет 9 строк). Но может быть легче сделать, чтобы люди сделали анализ и форматирование и позволили DBMS просто хранить данные.
Я сделал это (строго смоделировал адресные структуры в базе данных), и больше никогда не буду делать этого. Вы не можете себе представить, насколько безумны исключения, которые вам, как правило, придется принимать во внимание.
Я смутно припоминаю некоторую проблему с норвежскими почтовыми индексами (я думаю), которые были всеми четырьмя позициями, кроме Осло, который их было 18 или около того.
Я абсолютно уверен, что с того момента, как мы начали использовать географически правильные почтовые индексы для всех наших национальных адресов, довольно много людей начали жаловаться на то, что их почта пришла слишком поздно. Оказалось, что эти люди жили недалеко от границы между почтовыми зонами, и, несмотря на то, что кто-то действительно жил в почтовой зоне, скажем, 1600, на самом деле его почта должна быть адресована на почтовый ящик 1610,
Это может быть излишним, но если вам нужно решение, которое будет работать с несколькими странами, и вам нужно программно обрабатывать части адреса:
вы можете настроить обработку адресов для конкретной страны, используя две таблицы: одна общая таблица с 10 столбцами VARCHAR2, 10 числовыми столбцами, другая таблица, которая сопоставляет эти поля с приглашениями и имеет столбец страны, связывающий структуру адреса со страной.