Не удается обновить базу данных php с помощью приложения Flash - PullRequest
0 голосов
/ 12 апреля 2011

У меня тут какая-то проблема.Я пытаюсь разработать менеджер флэш-баз данных для своей компании, и у меня уже есть функции вставки и поиска, которые работают нормально.Проблема возникает при попытке заставить ОБНОВЛЕНИЕ работать.Я опубликую оба кода здесь:

PHP (ОБНОВЛЕНО)

<?php
//connect to the local MySQL
$connect=mysql_connect("localhost", "****", "****");

//select your database
mysql_select_db("****");

//Variables
$ID=$_POST[IDPost];

$Nome=$_POST[Nome];
$Tipo=$_POST[Tipo];
$Empresa=$_POST[Empresa];
$Morada=$_POST[Morada];
$CodPostal=$_POST[CodPostal];
$Email=$_POST[Email];
$Contacto1=$_POST[Contacto1];
$Contacto2=$_POST[Contacto2];
$DataNascimento=$_POST[DataNascimento];
$Profissao=$_POST[Profissao];
$Notas1=$_POST[Notas1];
$Notas2=$_POST[Notas2];

//query the database
$query="

UPDATE 
    GestaoClientes 
SET 
    Nome = '$Nome',
    Tipo = '$Tipo',
    Empresa = '$Empresa',
    Morada = '$Morada',
    CodPostal = '$CodPostal',
    Email = '$Email',
    Contacto1 = '$Contacto1',
    Contacto2 = '$Contacto2',
    DataNascimento = '$DataNascimento',
    Profissao = '$Profissao',
    Notas1 = '$Notas1',
    Notas2 = '$Notas2'
WHERE 
    ID = '$ID'";

$result=mysql_query($query);

if (!mysql_query($query,$connect))
{
    die('Error: ' . mysql_error());
    echo "Result=NotOk";
}else{
    echo "Result=Ok";
}

mysql_close($connect);
?>

Flash

public function editInfo(MouseEvent):void
        {
            var request:URLRequest = new URLRequest ("link.php");
                request.method = URLRequestMethod.POST; 
                trace("called");

                var variables:URLVariables = new URLVariables(); 

                variables.IDPost = NField.text;

                variables.Nome = NomeField.text;
                variables.Email = NomeField.text;
                variables.Morada = MoradaField.text;
                variables.CodPostal = CodPostalField.text;
                variables.Tipo = TipoField.text;
                variables.Empresa = EmpresaField.text;
                variables.Profissao = ProfissaoField.text
                variables.DataNascimento = DataNascimentoField.text;
                variables.Notas1 = Notas1Field.text;
                variables.Notas2 = Notas2Field.text;

                request.data = variables; 

                var loader:URLLoader = new URLLoader (request); 
                loader.addEventListener(Event.COMPLETE, onComplete); 
                loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
                loader.load(request); 

            function onComplete(e:Event):void 
            {
                trace("ok");
            }

}

Когда я пытаюсьphp в браузере, если просто выдаст мне ошибку:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Nome' = '', 'Tipo' = '', 'Empresa' = '', 'Morada' = '', 'CodPostal' = '', 'Emai' at line 4

Хотя это, вероятно, нормально, так как я не передаю никакие переменные "POST" через браузер.

Возвращение doesent flashлюбые ошибки при попытке этого кода, поэтому я предполагаю, что с самим соединением все в порядке, но оно также должно выполнить обновление.Что-то не так с этим кодом?Спасибо.

ОБНОВЛЕНИЕ: теперь я изменил свой код, и он не показывает синтаксическую ошибку, но все еще обновляется во флэш-памяти.Есть идеи почему?: / спасибо

Ответы [ 3 ]

3 голосов
/ 12 апреля 2011

Вы должны использовать обратные кавычки вместо одинарных кавычек для имен столбцов:

`Nome`

это причина синтаксической ошибки. Также можно вообще не использовать кавычки.

Кроме того, ваш код уязвим для SQL-инъекций . Читайте о проблеме, это важно для безопасности.

Чтобы устранить уязвимость, выполните следующие действия для каждой переменной:

$Nome = mysql_real_escape_string($_POST["Nome"]);

и затем вставьте экранированную переменную:

SET `Nome` = '$Nome',
1 голос
/ 12 апреля 2011

Удалить одинарные кавычки вокруг имен столбцов.Допускаются обратные пометки (`), одинарные кавычки (') не допускаются.

Я надеюсь, вы понимаете, что если ваш код действительно выглядит выше, у вас есть огромная дыра в безопасности, поскольку любой может выполнить произвольный SQL-код.

1 голос
/ 12 апреля 2011

Я предлагаю вам внимательно посмотреть на , выходящий за пределы вашего внешнего входа !Вставка переменных непосредственно в ваш запрос подвергает вас инъекции, что является огромной проблемой безопасности.( прочитайте это ).

проблема в том, что вы используете одинарные кавычки вокруг имен полей, это неверно.

MySQL использует обратные ссылки (`), ноЯ не рекомендую использовать их, поскольку они ограничивают переносимость другими приложениями sql.

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