Dram

Рейтинг
1114
Регистрация
28.06.2008
ArbNet #:

Вам же Marat_Kh показал образец подготовленного запроса. PDO уже позаботилось чтобы не было SQL инъекций, надо делать подготовленный запрос.

То есть сначала формируется запрос с переменными вида :name далее PDO проверяет запрос и если всё хорошо подставляете вместо переменных данные.

печалька.. 😂

Про подготовленные запросы я прочитал, но в итоге получится в 2 раза больше строк чем я обычно пишу.

Хотелось бы наоборот упростить себе задачу, а не усложнить, при этом козыряя - вот дескать на ООП пишу )))

Я бы хотел писать такие запросы типы

$str = "П'етр первый";
$insert = $db->request("INSERT INTO `test` (`id`, `name`, `url`, `sid`) VALUES (NULL, '{$str}', 'http://google.com', '0');");

и не думать каждый раз, а что там в переменной, надо ли экранировать - чтобы класс сам все экранировал, без танцев с подготовленными запросами.

Нельзя так?

Спасибо за ответы - но все что предложили выше вроде бы не универсально.  Insert ведь разные бывают в разные таблицы, разное кол-во полей, условия там разные....

По сути мне нужно просто экранирование кавычек но  ДЛЯ ЛЮБОГО запроса пришедшего в класс. Так можно сделать?

Удалил Хром из системы, удалил Хромдрайвер. Установил все заново.

Проверил версию - 

Google Chrome 86.0.4240.75

Скачал вебдрайвер версии (теперь при запуске пишет правильную версию, раньше реально старая стояла)

 ChromeDriver 86.0.4240.22

Повторил запуск - те же ошибки (((

Проблему вроде детектировал - страницы поиске на случайной итерации просто не загружались, вероятно сайт не справляется с такой скоростью. Поставлю слип в 1 сек.
Вопрос решен - нужно было    try{} catch{} внутрь цикла засунуть...
alexverem #:
да во втором  nomenclature лишняя, значит без нее правильно. И будет тоже самое что первый вариант значит?

Вам уже ответили что INNER JOIN тут бессмысленно применять, таблица то одна и та же.

Попробовал запустил драйвер через Джаву

java -"Dwebdriver.chrome.driver"=/var/www/com/chromedriver  -jar /var/www/com/selenium.jar

Все запустилось, запускаю скрипт изменив 

$host = 'http://localhost:4444';

PHP Fatal error:  Uncaught Facebook\WebDriver\Exception\WebDriverException: JSON decoding of remote response failed.
Error code: 4
The response: '<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  
</script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified route in /var/www/com/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php on line 303

Уже вроде лучше, хоть что-то ... буду гуглить дальше

Sly32 - да блин знаю, у меня сын подошел посмотреть с чем я мучаюсь, сел рядом и на питоне запустил этот же селениум за пару минут!!! Зара мля! Тут же был изгнан из комнаты чтобы не делал бате нервы! )))

Большое спасибо за подробную инструкцию!

1. Установил через компостер  php-webdriver/webdriver.

2. проверил версию хрома - Google Chrome 84.0.4147.89

3. Скачал  ChromeDriver 84.0.4147.30

4. Перешел в папку куда скачал, запускаю   chromedriver --port=7010 --whitelisted-ips=127.0.0.1

получаю в консоли

Starting ChromeDriver 76.0.3809.68 (420c9498db8ce8fcd190a954d51297672c1515d5-refs/branch-heads/3809@{#864}) on port 7010
Remote connections are allowed by a whitelist (127.0.0.1).
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

Вроде запустился да? (Я кстати хч почему Starting ChromeDriver 76.0.3809.68 не соответствует тому номеру что я скачал)

4. Запускаю ваш скрипт изменив в нем только путь до autoload.php

но получаю ошибку

PHP Fatal error:  Uncaught Facebook\WebDriver\Exception\UnknownServerException: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Sly32 #:
Dram, вот это неправильный путь. Ты, вместо того, чтобы разобраться почему не работает, прикрутил еще один фреймворк как какую-то миддлварю. Зачем? 

Sly32  я так и не нашел в сети работающих мануалов по запуску селениума + пхп.  Есть буквально пару штук, но выполнив все шаги получаю ошибку (самый первый пост).

Если вы знаете как запустить это добро, буду рад следовать вашим инструкциям

На данный момент сам селениум сервер запускается нормально, но при запуске скрипта php получаю ошибку

PHP Fatal error:  Uncaught Facebook\WebDriver\Exception\SessionNotCreatedException: Unable to create new service: ChromeDriverService
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'fin', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.0-9-amd64', java.version: '1.8.0_222'
Driver info: driver.version: unknown in /var/www/com/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:154
Всего: 6924