Эта ошибка часто возникает из-за того, что вы забыли правильно удалить данные, переданные в 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-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!
Документация:
Почему Вы не представляете свой код вместо того, чтобы фокусироваться на микросравнительных тестах?
существуют некоторые хорошие профилировщики С открытым исходным кодом как:
Во-первых, точный , конечно, не возможное или значимое понятие при разговоре о времени или пространстве, так как никакое эмпирическое измерение физической величины никогда не может симулировать быть точным.
113-секундный, David Bolton статья блога может быть полезной. Я заключаю в кавычки:
, Если это было синхронизировано со счетчиком высокого разрешения тогда, это будет с точностью до микросекунд. Это на самом деле с точностью до наносекунд (10-9 секунд, т.е. одна миллиардная секунды), но существует такое другое продолжение материала, что точность наносекунды действительно немного бессмысленна. При выполнении синхронизации или сравнительного тестирования кода, необходимо сделать много выполнений и занять среднее время - из-за других процессов, работающих в соответствии с Windows, сколько свопинга к диску происходит и т.д., значения между двумя выполнениями могут варьироваться.
MSDN имеет некоторый пример с секундомера. У них также есть он показывающий, насколько точный это в течение Наносекунд. Надежда это помогает!
В дополнение к seconding совет HUAGHAGUAH выше, я добавил бы, что необходимо ОЧЕНЬ скептически относиться к микросравнительным тестам в целом. В то время как сфокусированное на завершении тестирование производительности имеет законное место, очень легко настроить неважную деталь. Так запишите и проверьте код, который разработан для удобочитаемости и ясности, затем представьте его для обнаружения, где горячие точки (или являются ли там какой-либо, который стоит взволновать о), и затем настройте (только) те части.
я вспоминаю работу с программистом, который микрооптимизировал немного кода, который выполнился, в то время как система ожидала человеческого входа. Экономия времени абсолютно исчезла в задержке между нажатиями клавиши!
Я только что написал статью, в которой объясняется, как необходимо выполнить настройку теста, чтобы получить высокую точность (лучше 0,1 мс) секундомера. Думаю, это должно все объяснить.
http://www.codeproject.com/KB/testing/stopwatch-measure-precise.aspx
Класс секундомера возвращает разные значения в разных конфигурациях, поскольку частота зависит от установленного оборудования и операционной системы.
Используя класс секундомера, мы можем иметь только приблизительную оценку времени выполнения. И для каждого выполнения он возвращает разное значение, поэтому мы должны взять среднее значение для разного выполнения.
Дополнительная информация: http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx