строка без кавычек в shell_exec

#php #mysql #shell

Вопрос:

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

  $abc = shell_exec("mysql  --user=**** --password=**** --host=**** db -e
 
'SELECT TABLE_NAME,
       COLUMN_NAME 
 FROM information_schema.COLUMNS
 WHERE   COLUMN_NAME LIKE '"'%lead%'" 
 AND TABLE_NAME  LIKE '"'%leads%'"  "); '
 

он работает для отдельных условий отдельно, таких
как

 WHERE   COLUMN_NAME LIKE '"'%lead%'"
 

или

 WHERE TABLE_NAME  LIKE '"'%leads%'" 
 

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

Комментарии:

1. Что вы пытались сделать, чтобы решить эту проблему? Где ты застрял? Почему бы не использовать MySQL-коннектор PHP?

2. почему бы вам вместо этого не использовать mysqli_* функции в PHP? Вы не сможете справиться с ошибками, если используете shell_exec()

Ответ №1:

если вы хотите, чтобы кавычки были частью строки, вам нужно экранировать ее с помощью обратной косой черты "

Ответ №2:

Просто уберите свои цитаты обратной косой чертой.

 $abc = shell_exec("mysql --user=**** --password=**** --host=**** db -e 'SELECT TABLE_NAME,COLUMN_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME LIKE '"'%lead%'" AND TABLE_NAME LIKE '"'%leads%'"'");
 

Комментарии:

1. ошибка : — [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным.

Ответ №3:

Используйте это

 shell_exec("mysql --user=**** --password=**** --host=**** db -e 'SELECT TABLE_NAME,COLUMN_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME LIKE '"'%lead%'" AND TABLE_NAME LIKE '"'%leads%'"'");
 

Комментарии:

1. Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него уроки. Разве это не тот же ответ, что и тот, который дал Питер Пиварк за двенадцать минут до вашего?

2. ошибка- [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным.