были сотни, если не тысячи сообщений об использовании PHP eval ();запустить код из базы данных.В ходе всех моих поисков я не нашел ответа на свой вопрос (объясняется в ближайшее время).
Сначала я познакомлю вас с моей заявкой.
У меня есть три записи действительного кода, хранящиеся вбаза данных:
например:
['code1']
$num1 = 1;
$num2 = 3;
$num3 = $num1+$num2; //4
['code2']
$num4 = $num3; //4
$num5 = 5;
$num6 = $num4+$num5; //9
['code3']
$num7 = $num4; //4
$num8 = $num6; //9
$num9 = $num7+$num8; //13
echo $num9; //13
Далее у меня есть функция для вызова и запуска записи:
Например:
function runCode($codeName) {
// assume db connection is established
$result = mysql_query("SELECT `code` FROM CodeStore WHERE `name` = '".$codeName."'");
if ($result) {
// Fetch one row
$row = mysql_fetch_assoc($result);
if (!$row) {
die('No rows returned.');
} else {
return eval($row['code']);
}
} else {
die('Invalid query: '.mysql_error());
}
}
Теперь необходимо вызвать три вышеупомянутых фрагмента, один за другим, и получитьПеременные внутри ($ numX) доступны для использования между собой.
Например:
runCode('code1');
runCode('code2');
runCode('code3');
Вышеприведенный вызов трех фрагментов из БД должен повторить '13', но это не так.И вот мой вопрос:
Как я могу сделать эти переменные доступными вне кода eval'd?