Эта ошибка часто возникает из-за того, что вы забыли правильно удалить данные, переданные в MySQL-запрос .
Пример того, что не делать («Плохая идея»):
$query = "UPDATE `posts` SET my_text='{$_POST['text']}' WHERE id={$_GET['id']}";
mysqli_query($db, $query);
Этот код может быть включен в страницу с формой для отправки с URL-адресом например http://example.com/edit.php?id=10 (для редактирования сообщения n ° 10)
Что произойдет, если представленный текст содержит одинарные кавычки ? $query
закончится:
$query = "UPDATE `posts` SET my_text='I'm a PHP newbie' WHERE id=10';
И когда этот запрос будет отправлен в MySQL, он будет жаловаться, что синтаксис неверен, потому что в середине есть отдельная одинарная кавычка.
Чтобы избежать таких ошибок, вы ДОЛЖНЫ всегда избегать данных перед использованием в запросе.
Экранирование данных перед использованием в SQL-запросе также очень важно, потому что если вы этого не сделаете, ваш скрипт будет быть открытым для инъекций SQL. SQL-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!
Документация:
Это используется, чтобы не называть коллизии. Если бы Вы назвали свой сценарий foobar
, и кто-то еще сделал также, то центральным репозиториям было бы нелегко различать их.
Поэтому необходимо обеспечить некоторый URL, которым Вы управляете (т.е. Вы владеете им или можете управлять им), который в основном означает "все, с которым URL мной". Теперь те центральные репозитории могут различать foobar
от http://somesite.com/
и foobar
от http://anothersite.com
.
не необходимо для основной операции, но убедительно предполагавшее, если Вы хотите совместно использовать свои сценарии.
Одно место Вы видите практический эффект пространств имен, находится в хранении предпочтений. Nampsaces используются для однозначного определения сценариев для любых определенных для сценария сохраненных предпочтений.
, Например, если у Вас есть сценарий как это:
// ==UserScript==
// @name Script Name
// @namespace http://example.com
// @include *
// ==/UserScript==
GM_setValue("key", "value");
, Который был бы сохранен в Ваших предпочтениях (доступный в prefs.js и about:config) как так:
greasemonkey.scriptvals. http://example.com/Script Примечание Name.key
формат: greasemonkey.scriptvals. namespace
. scriptname
. key/variablename
В целом, пространство имен является абстрактным контекстом обеспечения контейнера для объектов (имена, или технические термины или слова), оно содержит и разрешение неоднозначности разрешения объектов, имеющих то же имя (нахождение в различных пространствах имен).
Источник: Пространство имен - Википедия
И более конкретный:
Это - URL, и Механик использует его для различения пользовательских сценариев, которые имеют то же имя, но записаны различными авторами. Если у Вас есть доменное имя, можно использовать его (или подкаталог) как пространство имен. Иначе можно использовать тег: URI.
@namespace является дополнительным. Если существующий, это может появиться только однажды. Если не существующий, это принимает значение по умолчанию к домену, с которого пользователь загрузил пользовательский сценарий.
Источник: Погружение В Механика - Метаданные