Эта ошибка часто возникает из-за того, что вы забыли правильно удалить данные, переданные в 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-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!
Документация:
Похож libxml2.2
, прибывает в SDK, и libxml/HTMLparser.h
требования следующее:
Этот модуль реализует синтаксический анализатор непроверки HTML 4.0 с API, совместимым с синтаксического анализатора XML. Это должно быть в состоянии проанализировать HTML "реального мира", даже если сильно поврежденный с точки зрения спецификации.
, Который походит на то, в чем я нуждаюсь, таким образом, я, вероятно, собираюсь использовать это.
Это, вероятно, зависит от того, насколько грязный HTML и что Вы хотите извлечь. Но обычно Опрятный делает вполне хорошее задание. Это записано в C, и я предполагаю, что необходимо быть в состоянии создать и статически связать его для iPhone. Можно легко установить версию командной строки и протестировать результаты сначала.
API Objective C Google GData повторно реализует NSXMLElement и другие связанные классы, которые Apple удалила из iPhone SDK. Можно найти его здесь http://code.google.com/p/gdata-objectivec-client/ . Я использовал его для имеющего дело, обмениваясь сообщениями через Бессмысленные данные. Конечно, если Ваш HTML уродлив (пропускающий закрывающие тэги), это не могло бы помочь многому.
Возможно, вы захотите проверить ElementParser. Он обеспечивает "достаточно" разбор HTML и XML. Хорошие интерфейсы делают обход документов XML / HTML очень простым. http://touchtank.wordpress.com/
Я обнаружил, что использование hpple весьма полезно для анализа запутанного HTML. Проект Hpple - это оболочка Objective-C в библиотеке XPathQuery для синтаксического анализа HTML. С его помощью вы можете отправить запрос XPath и получить результат.
Требования :
-Добавить libxml2 в ваш проект
-Добавить библиотеку libxml2 в ваш проект
-From hpple получите следующие файлы исходного кода и добавьте их в свой проект:
-Пройдитесь по w3school XPath Tutorial , чтобы освоиться с языком XPath.
Пример кода
#import "TFHpple.h"
NSData *data = [[NSData alloc] initWithContentsOfFile:@"example.html"];
// Create parser
xpathParser = [[TFHpple alloc] initWithHTMLData:data];
//Get all the cells of the 2nd row of the 3rd table
NSArray *elements = [xpathParser searchWithXPathQuery:@"//table[3]/tr[2]/td"];
// Access the first cell
TFHppleElement *element = [elements objectAtIndex:0];
// Get the text within the cell tag
NSString *content = [element content];
[xpathParser release];
[data release];
Известные проблемы
Поскольку hpple представляет собой оболочку над XPathQuery, которая является другой оболочкой, этот вариант, вероятно, не самый эффективный. Если в вашем проекте проблема с производительностью, я рекомендую написать собственное облегченное решение на основе кода библиотеки hpple и xpathquery.
Я написал легкую оболочку для libxml, которая может оказаться полезной: