Intereting Posts
gii не работает в yii Как связать каждую кнопку с отдельными знаками? Получить конкретный html-контент с другого сайта с помощью PHP REQUEST_URI: echo $ url: получить только количество URL-адресов Запросить последние данные от lastfm с помощью codeigniter и xmlrpc PHP fgetcsv – обнаружение слишком большого количества записей Обновление страницы после завершения загрузки в jQuery Multi file Uplaoder как когниционист санирует исходные данные? Мой первый плагин WordPress. Невозможно запустить скрипт. Формат JSON для столбца в столбце Google Есть ли способ для пользователей моего сайта приглашать своих друзей через Facebook Connect или API? WordPress Admin: при размещении пользовательского типа сообщения в качестве подменю родительского меню ссылка родительского меню переопределяется CPT Как игнорировать синхронизацию, если значение null в laravel Бесконечный цикл перенаправления WordPress wp-admin как хранить значения текстового поля в массиве с помощью jquery?

Как узнать, когда необходим побег для MySQL

Я занимаюсь созданием сайта с помощью CodeIgniter. Это первый сайт, который я создал сам, который взаимодействует с базой данных. Я использую MySQL для этого проекта. Как я могу определить, нужно ли удалять данные перед сохранением базы данных?

Если вы используете класс базы данных с привязками запросов , вам не нужно выполнять какое-либо ручное экранирование:

Второе преимущество использования привязок заключается в том, что значения автоматически экранируются, создавая более безопасные запросы. Вам не нужно забывать вручную удалять данные; двигатель делает это автоматически для вас.

Я бы посоветовал вам приучить себя использовать подготовленные заявления. Тем более, что вы новичок в работе с базами данных. Чем раньше вы начнете использовать их, тем легче станет второй натурой.

Я, например, не знал о подготовленных заявлениях, когда я начинал с баз данных. И я испытал свою собственную замкнутость, когда я связался с ними. Потому что я уже привык к другому способу делать что-то уже. Теперь это может быть не торговля персонажем, но это не помешает начинать как можно скорее с ним в любом случае.

Подготовленные утверждения позволяют использовать заполнители в запросах. Затем эти заполнители могут быть заменены фактическими значениями, привязывая их к заполнителям. Этот процесс привязки автоматически ускользает от значений.

Вот пример (простой) PDO :

$db = new PDO( /* some database parameters */ ); $statement = $db->prepare( 'INSERT INTO table VALUES( :username, :password )' ); $statement->bindValue( ':username', $dirtyUsername ); $statement->bindValue( ':password', $dirtyPassword ); $result = $statement->execute(); // result checking ommited for brevity 

Есть много возможностей с PDO и подготовленными операторами. Например, вы можете легко повторно использовать подготовленный оператор в цикле, как таковой:

 $statement = $db->prepare( 'INSERT INTO table VALUES( :username, :password )' ); foreach( $users as $dirtyUser ) { $statement->bindValue( ':username', $dirtyUser->username ); $statement->bindValue( ':password', $dirtyUser->password ); $result = $statement->execute(); // result checking ommited for brevity } 

Или передайте привязки заполнителя методу выполнения, например:

 $statement = $db->prepare( 'INSERT INTO table VALUES( :username, :password )' ); $result = $statement->execute( array( ':username' => $dirtyUsername, ':password' => $dirtyPassword ) ); // result checking ommited for brevity 

… и т.д. и т. д.

Не беспокойтесь о том, чтобы убежать от себя (вы это испортите). Используйте уровень БД, где вы сначала подготовьте инструкцию, а затем добавите в нее данные.

В PHP вы должны использовать PDO . Ты пишешь

 SELECT * FROM table WHERE key = :key AND value = :value 

а затем добавьте данные, вызывая функции.

Если данные являются строкой, она всегда должна быть экранирована.

Однако лучше использовать параметры.

Если вы сами генерируете SQL, а не используете что-то вроде PDO, вы всегда должны избегать строк.

Исключение строк является основным требованием языка SQL. Это то, что позволяет использовать символы, такие как апострофы или обратные косые черты в строке, без всякого ухудшения. Нет никакой ситуации, в которой избежать строк не требуется.

Даже не строки должны быть отфильтрованы, чтобы гарантировать, что они, действительно, не являются строками.

Если вы учитесь, серьезно подумайте об изучении чего-то вроде PDO, как говорили многие другие, вместо того, чтобы избегать собственных строк.

Когда вы сомневаетесь, избегайте всего этого. Не может быть слишком безопасным.

Хорошо хорошо. Я получаю

ВСЕГДА ЭСКАП

Вы избегаете строки запроса MySQL, когда какая-либо строка состоит из пользовательского ввода, например:

в PHP: $ username =; // VALUE FROM USER INPUT

то ваша строка запроса: «INSERT INTO table ('username') VALUES (". $ username. ")"

Вам пришлось бы избежать этого mySQL-запроса из-за того, что переменная $ username могла бы иметь злоумышленный код, введенный клиентом для вставки в вашу базу данных.

Когда бежать? Как только ваш сайт станет общедоступным.