#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. ошибка- [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным.