Парсинг данных в базу mysql

G2
На сайте с 12.01.2013
Offline
36
1428

Помогите пожалуйста, имеется самий простой парсер который парсит html код, мне нужно сделать так, чтоб он сохранял спарсений код в базу, я делал так:

$db = mysql_connect ("localhost","root","123456");
mysql_select_db ("mybaza",$db);

$url="url сайта с которого парсится";
$content=file_get_contents($url);

$tag_in="<div class=\"text_in_views\">";// здесь ставлю откуда парсить
$tag_out="<div class=\"voting\">";// здесь ставлю докуда парсить

$position=strpos($content,$tag_in);
$content=substr($content,$position);
$position=strpos($content,$tag_out);
$content=substr($content,0,$position);

//здесь идет запись в базу
$query = "INSERT INTO test_table(monday) VALUES('$content')";
mysql_query($query, $db);
mysql_close($db);

но у меня почему то ничего не заносится в базу. Помогите разобраться почему.

TF-Studio
На сайте с 17.08.2010
Offline
334
#1

Открыть для себя curl и регулярки

or die("Invalid query: " . mysql_error());

такое можно добавить.

+ данные надо экранировать, как минимум

http://dev.mysql.com/doc/refman/5.5/en/insert.html

и тут можно почитать немного

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
G2
На сайте с 12.01.2013
Offline
36
#2

так у меня вроде бы заэкранированы, или я что то пропустил ?

TF-Studio
На сайте с 17.08.2010
Offline
334
#3

в каком месте?

лучше, конечно, что-то вроде pdo использовать - там эта проблема не стоит

G2
На сайте с 12.01.2013
Offline
36
#4

ого, интересно, если честно то я первый раз слышу о pdo, нужно почитать что оно делает. Хотел у Вас спросить, не могли бы вы мне показать как его применить к моему примеру, если Вам не сложно.

TF-Studio
На сайте с 17.08.2010
Offline
334
#5
doctorpc
На сайте с 12.07.2009
Offline
112
#6
TF-Studio:
Открыть для себя curl и регулярки

А еще, как вариант, PHP Simple HTML DOM Parser

iqmaker
На сайте с 17.04.2012
Offline
309
#7
doctorpc:
А еще, как вариант, PHP Simple HTML DOM Parser

Тоже подумал, что регулярки далеко не лучший способ грабить html контент.

IS
На сайте с 02.03.2007
Offline
115
#8
gigs2:
так у меня вроде бы заэкранированы, или я что то пропустил ?

здесь не экранированы, добавьте addslashes

$content=file_get_contents($url);

здесь экранированы

$tag_in="<div class=\"text_in_views\">";// здесь ставлю откуда парсить
$tag_out="<div class=\"voting\">";// здесь ставлю докуда парсить
TF-Studio
На сайте с 17.08.2010
Offline
334
#9

addslashes - 5 баллов!

L
На сайте с 07.12.2007
Offline
351
#10

gigs2, после

mysql_query($query, $db);
вставьте
echo "'".mysql_error($db)."'";
чтобы посмотреть есть ли ошибки записи в MySQL.

И в формате

$query = "INSERT INTO test_table(monday) VALUES('$content')";
легко допустить ошибку в названиях полей и их порядке, используйте явно ПОЛЕ='значение':

$query = "INSERT INTO `test_table` SET monday='$content', url='$url'";

Имя таблицы `test_table` берите в ` чтобы избежать проблем с именами таблиц.

Подумайте как сработает monday='$content' если $content=О'хара т.е. содержит '). Привыкайте экранировать кавычки и спецчимволы, или напоритесь на sql-injection.

Для этого в PHP есть функции: mysql_escape_srting()(устарела), mysql_real_escape_srting(), addslashes() и stripcslashes()

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий