2016-11-30 3 views
-3

Я выполнение кода внутри переменной, которую я получаю в функции, это функция:Выполнить код в переменной перед возвращением

function request_data_sql($sql, $req) { 
    global $conn; 
    $result = mysqli_query($conn, $sql); 
    if (mysqli_num_rows($result) > 0) { 
     while($row = mysqli_fetch_assoc($result)) { 
      return $req; 
     } 
    } 
} 

И я даю информацию с помощью этого кода:

request_data_sql("SELECT email FROM login WHERE userid = '4'", "echo $"."row['email']"); 

Он выполняет код, если я удаляю возвращаемый возврат в функции, но когда я верну его, он возвращает 'echo $ row [' email ']'.

Когда я выполняю код он выходит, как это для браузера:

function request_data_sql($sql, $req) { 
    global $conn; 
    $result = mysqli_query($conn, $sql); 
    if (mysqli_num_rows($result) > 0) { 
     while($row = mysqli_fetch_assoc($result)) { 
      echo $row['email']; 
     } 
    } 
} 

Но это не на самом деле эха электронной почты, потому что я думаю, что функция считывает переменный $ REQ как «эхо $ строка [ 'электронной почты']».

Есть ли способ вернуть электронное письмо в базу данных?

EDIT: Надеюсь, я объяснил это лучше, извините за плохое объяснение раньше.

+1

Принеси его в массив и возвращает массив ...? Может быть? –

+0

* «Он выполняет код, если я удаляю возврат в функции, но когда я его возвращаю, конечно, он дает мне то, что находится внутри письма» * - это предложение для меня не имеет смысла. – deceze

+0

Просто введите код перед возвратом ..? Также зачем использовать цикл while, если у вас есть только один результат? –

ответ

0

ВНИМАНИЕ eval() конструкция языка очень опасно, потому что она позволяет выполнить произвольный код на PHP. Поэтому его использование не рекомендуется. Если вы тщательно проверили, что нет другого выбора, кроме использования этой конструкции, обратите особое внимание на то, чтобы не передавать какие-либо данные, предоставленные пользователем, без предварительной проверки.

Я положил предупреждение первым, потому что вы должны действительно, ДЕЙСТВИТЕЛЬНО пытаются найти альтернативу. Но если вы должны выполнить его таким образом, вы можете сделать это:

function request_data_sql($sql, $req) { 
global $conn; 
$result = mysqli_query($conn, $sql); 
if (mysqli_num_rows($result) > 0) { 
     while($row = mysqli_fetch_assoc($result)) { 
      eval($req.";"); 
     } 
    } 
} 

Документация по функциям here

Смежные вопросы