Можно ли выполнить запрос MySQL с этой структурой? - PullRequest
0 голосов
/ 02 августа 2011
    include("connect.php");
    $username = mysql_real_escape_string($_REQUEST[username]);


    function updateData($key){
    $field = "$$key";
    if($field == "") {
    } else {
    $sql= "UPDATE users SET $key = '$field' WHERE username ='$username'";
    mysql_query ( $sql , $conexion );
    }
    }

    updateData('password');
    updateData('firstname');

Я пытаюсь сделать так, чтобы этот файл PHP автоматически распознавал поля, а не сохранял их, если значение поля ввода пусто.

Если я вручную помещаю имя поля в $key пробелы, оно работает, но как только я превращаю его в функцию и запускаю ее, оно не работает.

Ответы [ 2 ]

3 голосов
/ 02 августа 2011

Не пишите свой код так.

  • Для начала, он не читается - он заставляет любого, кто поддерживает код, найти эту функцию, чтобы выяснить, откуда поступают используемые данные.

  • Во-вторых, у вас возникнут проблемы с областью действия переменных - внутри функции ни одна из ваших переменных не определена, если вы не ссылаетесь на них с помощью ключевого слова global, чтобы привести их в область действия.

Вместо этого напишите свою функцию следующим образом:

function updateData($username, $key, $value){
    if($key != "" && $value != "") {
        $sql = "UPDATE users SET $key = '$value' WHERE username ='$username'";
        mysql_query($sql, $conexion);
    }
}

и передать соответствующие значения; это то, для чего предназначены аргументы функций. Вы также можете рассмотреть возможность экранирования содержимого аргументов перед их интерполяцией.

0 голосов
/ 02 августа 2011

Я думаю, проблема в том, что переменные $username, $sql, $conexion не распознаются в этой функции

посмотрите по этой ссылке область видимости переменных

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