были сотни, если не тысячи сообщений об использовании PHP eval(); для запуска кода из базы данных. Через все мои поиски я не нашел ответа на свой вопрос (объяснил вкратце).PHP - код eval от DB
Во-первых, я расскажу вам о своем заявлении.
У меня есть три записи действительного кода, хранящегося в базе данных:
например:
[ 'code1']
$num1 = 1;
$num2 = 3;
$num3 = $num1+$num2; //4
[ 'Кодекса2']
$num4 = $num3; //4
$num5 = 5;
$num6 = $num4+$num5; //9
[ 'code3' ]
$num7 = $num4; //4
$num8 = $num6; //9
$num9 = $num7+$num8; //13
echo $num9; //13
Next У меня есть функция позвонить и запустить запись:
например:
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?
Либо это, либо передать в массиве кодовых имен и 'eval()' все они в одном вызове функции. –
так: глобальный $ numX; // для каждой переменной? ?? –
Да. Дайте мне несколько минут, я отредактирую свой пост, чтобы показать образец кода. – Lex