Сохранение значения в виде имени переменной в базе данных - PullRequest
1 голос
/ 21 сентября 2010

Таблица базы данных company_info

-----------------------------
| companyname | companytype |
-----------------------------
| Company One | Blah        |
-----------------------------
| Company Two | Blah2       |
-----------------------------

Таблица базы данных invoice_template

-----------------------------
| Header      | bgcolor     |
-----------------------------
| $company    | Red         |
-----------------------------
| $company    | Biege       |
-----------------------------

PHP-файл common_include.php

$company = ... //FROM db table company_info field companyname

PHP-файл invoice.php

include('common_include.php');
$header = ... //FROM db table invoice_template field header
echo "Header is ". $header;
echo "<br/>Company is ". $company; //$company is defined in common_include.php

ВЫХОД invoice.php , когда компания вошла, например, для компании. One

Header is $company
Company is Company One

Вопрос: Как получить $ company в выводе, которая будет отображаться как Company? Т.е. как я могу получить вывод из БД MySQL как переменную?

Ответы [ 3 ]

2 голосов
/ 21 сентября 2010

Решение будет eval("echo $header"), хотя вам НИКОГДА не следует прибегать к таким решениям.По моему мнению, вам следует перенести все данные, относящиеся к компании, в базу данных.

Обновление Не следует помещать $company в вашу базу данных.Реляционные базы данных должны быть реляционными .Это означает, первичные ключи и внешние ключи.Затем данные следует искать по их отношению.Смотрите также, как ORM будет работать в этой ситуации:

echo $invoice_template->getCompany()->getName();
1 голос
/ 21 сентября 2010

Если для $header задано буквенное значение строки $company, а для переменной $company задано значение Company One, то это должно работать:

echo "Header is ". $$header; // outputs 'Header is Company One'

Однако, как уже говорили другие, это не очень хорошая идея, особенно в отношении безопасности.

1 голос
/ 21 сентября 2010

Ты не хочешь этого делать. Вы просто открываете слишком много потенциальных уязвимостей, смешивая подобный код и данные - просто представьте себе, что происходит, когда злоумышленник получает доступ к вашей базе данных (напрямую или посредством SQL-инъекции) и помещает в этот столбец все виды сумасшедшего кода PHP? Используя только одну уязвимость, подобную этой, злоумышленник может захватить весь сервер. Вероятно, вам нужна комбинация правильной структуры базы данных, использование объединений для запроса соответствующей информации за один раз и, возможно, простой текстовый поиск и замена (с использованием str_replace или, возможно, даже preg_replace) для заполнения текстовых шаблонов. с актуальными данными.

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