PHP: несколько SQL-запросов в одном mysql_query операторе

Я пробовал это на Ubuntu 16.04 (обновлено) и ruby, который поставляется с системой ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu].

Из того, что я предполагаю, вы используете неправильный, старый (в руководстве есть версия 2.26 , которая не будет работать с текущим хромом), chromedriver, который не совместим с текущим стабильным хромом .

Текущий стабильный Chrome - Unpacking google-chrome-stable (71.0.3578.98-1) ..., поэтому вам нужно максимально приблизить chromedriver к версии Chrome.

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

В моем случае это будет 71.0.3578.80 версия:

wget -N http://chromedriver.storage.googleapis.com/71.0.3578.80/chromedriver_linux64.zip

Затем можно продолжить, как показано в инструкциях.

Тогда вы получите работу selenium-webdriver:

irb
irb(main):001:0> require 'selenium-webdriver'
=> true
irb(main):003:0> options = Selenium::WebDriver::Chrome::Options.new
=> #, @binary=nil, @prefs={}, @extensions=[], @options={}, @emulation={}, @encoded_extensions=[]>
irb(main):004:0> options.add_argument('--headless')
=> #
irb(main):005:0> @driver = Selenium::WebDriver.for(:chrome, options: options)
=> #

Примечание. Если у вас возникли проблемы с установкой ffi, установите libffi-dev через apt-get.

9
задан Matt 6 December 2008 в 01:40
поделиться

3 ответа

У Вас есть больше проблемных случаев, чем просто точки с запятой в строках.

  • Встроенные команды сценария, которые не могут быть выполнены mysql_query(), как USE.
  • Операторы, которые не завершаются с точкой с запятой, как DELIMITER.
  • Операторы, которые содержат точки с запятой, но не в кавычках, как CREATE PROCEDURE.

Я не знаю о простом способе справиться с этой задачей, не выходя из оболочки mysql клиенту командной строки. Я понимаю, что Вы сказали, что не можете полагаться на тот клиент, присутствующий, но без того клиента, Вам нужен большой объем кода PHP, чтобы проанализировать сценарий и выполнить операторы соответственно.

Вы можете находить такой код в phpMyAdmin продукте. Однако тот продукт лицензируется под GPL, поэтому при использовании какого-либо кода необходимо также лицензировать собственный проект под GPL.


См. также мои ответы на эти связанные вопросы:

12
ответ дан 4 December 2019 в 10:34
поделиться

Бритва Оккама ударяет снова.

Вышеупомянутое взрывается (), функция не собиралась работать, потому что существуют точки с запятой в значениях. Однако то, что мне не удалось понять (и упоминание) - то, что точки с запятой всегда предшествуют новым строкам в файле дампа SQL. Увы,

$sql = explode(";\n", file_get_contents('dump.sql'));
foreach ($sql as $key => $val) {
    mysql_query($val);
}

Кроме того, благодарит за Вашу справку, счет.

5
ответ дан 4 December 2019 в 10:34
поделиться

Здесь существует большая проблема. У Вас могли бы быть операторы, которые полагаются на другие операторы. Вы не можете просто выполнить их линейно вслепую.

3
ответ дан 4 December 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: