Вставка переменных в запросы MySQL - PullRequest
0 голосов
/ 01 ноября 2011

Я написал функцию, которая обновляет строку базы данных mysql новыми данными столбца.Вот функция:

function sql($set,$data){
    $sql = mysql_query("UPDATE members SET '".$set."' = '".$data."' WHERE login = '".$_SESSION['login']."'");
    if($sql){
        echo 'Profile updated.';
    }
    else{
        echo 'Could not update profile. Please try again later.';
    }
}

А вот фрагмент из программы, которая должна использовать функцию:

$array = array("$password", "$email", "$age");
                        if($array[0] != 0){
                            sql("password",$password);
                        }
                        if($array[1] != 0){
                            sql("email",$email);
                        }
                        if($array[2] != 0){
                            sql("age",$age);
                        }

Она не записывает значения в базу данных.В чем дело?Может быть, это цитата переменных в функции?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Удалить одинарные кавычки на SET:

function sql($set,$data){
    $sql = mysql_query("UPDATE members SET ".$set." = '".$data."' WHERE login = '".$_SESSION['login']."'");
    if($sql){
        echo 'Profile updated.';
    }
    else{
        echo 'Could not update profile. Please try again later.';
    }
}

Имена столбцов не нужно заключать в кавычки

Рабочий пример здесь -> http://www.sqlize.com/c34I44c37r

0 голосов
/ 01 ноября 2011

Это действительно цитата. Чтобы быть конкретным, это цитата для имени поля (имя, адрес электронной почты, ..)

Просто `вместо '

SET `foo` = 'bar'

PS: Пожалуйста, убедитесь, что вы экранировали ввод пользователя, прежде чем записать его в db, используя mysql_real_escape_string($data). В противном случае можно изменить ваш запрос, который называется MySQL инъекция.

...