2014-02-17 6 views
1

Я пытаюсь создать свою собственную простую базу данных, и я решаю одну последнюю проблему. Я сохраняю данные базы данных в файл, используя свой собственный формат (на самом деле упрощенное JSON отключено от всего, что не требуется). Эта проблема ускользает. Я использую (например) { как символ для обозначения имени таблицы. Проблема возникает, когда кто-то использует { в tableName. Как это решить?Экранирование символов в базе данных

Если я только что изменил его на какое-то другое значение, пользователь может ввести замену строки и после декодирования сохраненной базы данных обратно на программно читаемый путь (массивы, ...), эти строки будут декодированы, и пользователь не получит то, что он вошел. Я долго думал об этом и не мог найти решения. Есть идеи?

+1

Я бы настоятельно рекомендовал не изобретать вашу собственную базу данных ... и JSON уже так прост, насколько это действительно получается. Итак, предположим, что это упражнение. – Brad

+1

Просто не разрешайте это внутри имен таблиц? Зачем кому-то нужно {внутри имени таблицы? На стороне: вы можете решить эту проблему, ускорив фигурные скобки. – Tularis

+0

Действительно, кажется, что вам лучше пойти на 'SQLite' или что-то в этом роде. Но: 'json_encode' делает все для вас для json, я не вижу причин, почему' '' в строке должно быть проблемой. – Wrikken

ответ

2

Вам нужен escape-характер. Не просто замените его.

Предполагая, что { является двусмысленным, для ссылки на литературу { вы бы использовали \{. Теперь \ неоднозначен, поэтому просто выйдите из него также с помощью \\. Нет больше двусмысленности!

+0

. Какой самый простой способ (например, на PHP) проверить, не убегаем ли символ? – onlyMe

Смежные вопросы