Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
1

Как можно выполнить команду sql, записанную в переменную?

28.10.2018, 21:07. Просмотров 724. Ответов 16

Здравствуйте, как запустить на выполнение sql команду, которая выводится через переменную.
Например, есть переменная
$k='echo "Hello"';

Если написать напрямую echo "Hello";, выведет Hello.

Как можно запустить выполнение команды из переменных $k, не записывая вручную напрямую echo "Hello"; ?

P.s. У меня sql команды находятся в базе sql и выводятся через переменные.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2018, 21:07
Ответы с готовыми решениями:

SQLite: как выполнить команду, чтобы получить в int переменную количество строк в таблице
конкретный вопрос вот в чем command.CommandText = @"SELECT COUNT(clientID) FROM clients"; как...

SQL Server 2000 как в файле sql строковую переменную выполнить как инструкцию
Добрый день! Подскажите пожалуйста, как строковую переменную выполнить как инструкцию, например: ...

Как можно выполнить команду COPY так, чтобы созданный файл запускал обе программы?
как можно выполнить команду copy /b D:\3.exe + D:\33.exe D:\333.exe так, чтобы файл 333 запускал...

Как можно считать динамическую переменную и выполнить shell code?
есть переменная которая содержит шел код, необходимо ее считать так чтобы он выполнился, при этом...

16
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
28.10.2018, 21:11  [ТС] 2
Нужно вывести только результат выполнения команды из переменной, в данном случае только Hello
0
Изображения
 
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
28.10.2018, 21:48  [ТС] 3
Ответ: eval($k);
0
204 / 186 / 49
Регистрация: 15.03.2016
Сообщений: 1,188
29.10.2018, 10:08 4
Цитата Сообщение от Viktor_ Посмотреть сообщение
Ответ: eval($k);
это опасный вариант
0
Эксперт PHP
3496 / 2939 / 1236
Регистрация: 01.08.2012
Сообщений: 10,127
29.10.2018, 10:36 5
Viktor_, как написали выше, выполнение строк как команд в PHP опасная вещь, лучше поискать другое решение. Опишите исходную задачу.
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
29.10.2018, 14:46  [ТС] 6
У меня предложение строится из слов, которые выдергиваются рандомно из таблицы бд. Количество вариантов несколько тысяч. Начал выдавать ошибку, нет памяти. Решил перенести шаблоны в бд.
PHP
1
2
3
4
if ($k == 0 ) $word.=mb_convert_case(a('prilag1'),MB_CASE_TITLE).' '.a('sush1').' '.a('narechie1').' '.a('glagol1').' '.a('souz').' '.a('prilag2').' '.a('sush2').' '.a('narechie2').' '.a('glagol2').' (0)';
 
 
else if ($k == 1 ) $word.=mb_convert_case(a('prilag1'),MB_CASE_TITLE).' '.a('sush1').' '.a('narechie1').' '.a('glagol1').' '.a('souz').' '.a('prilag2').' '.a('sush2').' '.a('narechie2').' '.a('glagol2').' (1)';
0
204 / 186 / 49
Регистрация: 15.03.2016
Сообщений: 1,188
29.10.2018, 15:40 7
дичь вы какую-то лепите
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
29.10.2018, 15:55  [ТС] 8
Это генератор предложений. В массивах находятся соответствующие слова. Так как вариантов много, около 2000, генерация прямо в коде не проходит, решил эти шаблоны засунуть в таблицу и оттуда уже выдергивать рандомно через sql.
0
204 / 186 / 49
Регистрация: 15.03.2016
Сообщений: 1,188
29.10.2018, 15:59 9
ну так вытащите рандомные слова из БД одним запросом и сделайте
PHP
1
2
$row = $res->fetch_array();
$str = implode(' ', $row);
а ещё лучше функцию внутри БД написать, которая будет готовые предложения выдавать.

ну а у вас дичь из кучи вызовов каких-то внешних функций, каждая из которых походу делает запрос

ps: mb_convert_case() тоже делается в БД.
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
29.10.2018, 16:20  [ТС] 10
Я не потяну. Может посмотрит кто-нибудь код с базой, index.php при $k=1420 работает, а при $k=1423 уже нет.
0
Вложения
Тип файла: rar 3.ru — копия.rar (18.6 Кб, 4 просмотров)
204 / 186 / 49
Регистрация: 15.03.2016
Сообщений: 1,188
29.10.2018, 16:37 11
я это тоже не потяну. Это выше моих сил (
весь массив должен быть в бд, а не вот это всё
нахрена вы из пхп базу данных сделали?!
нахрена писать 100500 строк, когда в цикле можно запустить??
нахрена за каждым словом в БД лазать? Это самая тяжёлая операция - в БД ходить!
0
Миниатюры
Как можно выполнить команду sql, записанную в переменную?  
733 / 298 / 146
Регистрация: 26.05.2016
Сообщений: 1,973
29.10.2018, 16:40 12
Цитата Сообщение от полудух Посмотреть сообщение
нахрена вы в пхп базу данных сделали?!
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
29.10.2018, 17:08  [ТС] 13
А запустить получилось? Мне бы просто ехать, без шачешек
0
204 / 186 / 49
Регистрация: 15.03.2016
Сообщений: 1,188
29.10.2018, 21:14 14
если я правильно понял, у вас там вся эта каша только для того, чтобы вывести предложение из рандомных слов, которые лежат в отдельных таблицах такого плана:
'prilag1',
'prilag2',
'sush1',
'sush2',
'narechie1',
'narechie2',
'glagol1',
'glagol2',
'souz',
'souz2',
'tab1'

и походу каждому слову ещё надо транслитерацию сделать...
ещё Goroda какие-то, которые толи в файлах, толи не в файлах... всё должно быть в БД!
cp1251 там что делает?

лучше напишите исходные данные, и что хотите получить, а также примеры таблиц (первые 5 строк из glagol1, glagol2, city_pgt)
никто не будет эту кашу ковырять.

зы: $_SERVER['HTTP_HOST'] - это юзерская переменная, её юзер может менять. Надо юзать 'SERVER_NAME' - это серверная переменная.
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
29.10.2018, 22:33  [ТС] 15
В общем, решил задачу.
1. Создаем в базе записи строк такого рода. Это шаблоны для создания предложения из рандомных выборок:
<?php $word.=mb_convert_case(a('pril ag1'),MB_CASE_TITLE).' '.a('sush1').' '.a('narechie1').' '.a('glagol1').', '.a('souz1').' '.a('prilag2').' '.a('sush2').' '.a('narechie1').' '.a('glagol1').'.(3) '; ?>

Раньше это было прописано в коде через генерацию случайных чисел if $k=1 так, $к=2 эсяк.

2. Получаем из БД случайно строку одного из шаблона: $yy=a('generate');

3. Созраняем в файл, так как eval почему-то не работает с функцией а (случайная выборка записи): file_put_contents('random.txt' ,$yy);

4. Подключаем файл: include 'random.txt';
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 27
29.10.2018, 22:47  [ТС] 16
Может быть неправильно, что объединение слов в предложение происходит не в sql сразу, а в php и они записаны в базе, но так работает.
0
Миниатюры
Как можно выполнить команду sql, записанную в переменную?  
204 / 186 / 49
Регистрация: 15.03.2016
Сообщений: 1,188
30.10.2018, 09:15 17
так нельзя делать. никогда.
мало того, что безопасность в жопе, так ещё и оверхед.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2018, 09:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как можно открыть существующий запрос и поместить код SQL в строковую переменную
Здравствуйте, подскажите, пожалуйста, как я могу сохранить и загрузить запрос с помощью VBA....

Как вывести переменную, записанную в cookie на одной странице, на другой странице?
Доброго времени суток всем! Помогите пожалуйста советом новичку. Как вывести переменную,...

Как вместо названия таблицы в sQL-запросе можно подставить переменную, данное название содержащую?
Проблема такая. Каким образом вместо названия таблицы в sQL-запросе можно подставить переменную,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.