Не могу понять, почему не проверяет есть ли запись в базе данных или нет. Сам скрипт работает таким образом - парсит слово с сайта, вносит в блакнот и в базу данных. Вроде написала прежде чем вносить в базу, должен проверять есть ли запись или нет, если есть то чтобы не вносил в базу данных и не записывал в блокнот. Но почему то он не проверяет. Код (PHP): <?php session_start(); include("config.php"); echo getURL('http://www.lalal.com'); function getURL($url, $timeout = 30) { $ch = curl_init(); $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; $header[] = "Connection: keep-alive"; $header[] = "Keep-Alive: 300"; $header[] = "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"; $header[] = "Pragma: "; curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0"); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $content = curl_exec($ch); curl_close ($ch); $pos = strpos($content, '<h3>xxxx</h3>'); if (!$pos){ $f = fopen("../xxx/textfile.txt", "a"); $data = file('../xxx/textfile.txt'); array_splice($data, 0, 0, "cant get content, maybe wrong url or somesing changed!" ." [monhyip.net] / add5.php ".date("Y-m-d H:i:s",time())."\n"); file_put_contents('../projects/textfile.txt', implode('', $data)); $a = 1; fclose($f); die(); } $content = substr($content, $pos); // Точно таким же образом находим позицию конечной строки $pos = strpos($content, '</strong>'); // Отрезаем нужное количество символов от нулевого $content = substr($content, 0, $pos); $toDelete = 79; mb_internal_encoding("UTF-8"); $content = str_replace('[details]','', $content); $content = str_replace('<strong>','', $content); $content = str_replace('</strong>','', $content); $content = str_replace('</p>','', $content); $content = str_replace('<p>','', $content); $content = mb_substr( $content, $toDelete); for ($i=0; $i<2000; $i++){ if ($i % 1 == 0); $content = str_replace($i,'', $content ); } $connect = mysqli_connect($db_server, $db_user, $db_pass, $db_base); # Подключаемся к БД if (!$connect) # Если соединения нет, выводим ошибку на экран { mysqli_error(); } $sql = "SELECT * FROM ca WHERE link = '$content'"; $query = mysqli_query($connect, $sql); # Выполняем запрос if (mysqli_num_rows($query) > 0) # Если количество искомого значения будет больше одного, выводим сообщение об ошибки { }else{ if(!$content){}else{ $f = fopen("../projects/textfile.txt", "a"); $data = file('../projects/textfile.txt'); array_splice($data, 0, 0, $content ." [monhyip.biz] / add5.php ".date("Y-m-d H:i:s",time())."\n"); file_put_contents('../projects/textfile.txt', implode('', $data)); $r=mysql_query("INSERT INTO `ca` VALUES(null,'$content','1','".time()."');"); $a = 1; fclose($f); }} } ?> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Может у сервиса есть API? Что за сервис парсишь? http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html
www.allhyipmonitors.com, а причем здесь API у них? Я так же парсю другие сайте через file_get_contents и все ок но не берет allhyipmonitors вот почему и делают через curl. Проблема в том что curl не хочет проверять записи из бд...
но у нас тут не принято обсуждать парсеры сайтов. законный путь - использовать апи сайта, если таковое предоставлено.
решила вопрос Код (PHP): $query="SELECT * FROM ca WHERE link = '$content'"; $result=mysql_query($query); if (mysql_num_rows($result) > 0)
зачем выбирать все поля (астериском) если нужно проверить только наличие записи в базе? если далее с этими кортежами ничего не происходит то достаточно выбрать единицу.
что именно не ясно? как выбрать единицу вместо астериска (всех полей) ? select 1 from table where statement если условие истинно то будет выбрано такое кол-во единиц сколько строк попало под условие. не все поля всех этих строк, а тупо по четыре байта на каждую строку. мы же ничего с этими данными потом не делаем. нам нужно просто знать сколько строк попало под условие. еще можно сумму единиц выбрать и потом обработать этот агрегат - мускул в процессе выбора всяк быстрее посчитает кол-во чем пхп сделает num_rows по результирующей таблице.
вопрос не в публике а в логическом мышлении программиста. зачем дергать полные кортежи если нужно посчитать только их кол-во. если бы была какая-то обработка строк в цикле - вопросов нет. а так - не самый необходимый оверхед.