Странные проблемы с MySQL

0

Итак, я настраиваю таблицу с помощью браузера запросов mysql, и теперь я пытаюсь ее заполнить. Но независимо от того, что я делаю, он говорит "успешно создан аккаунт", но ничто никогда не добавляется в базу данных!

Код, который у меня есть, ниже:

`

            if($connection)
            {
                $out =
                    "<p>Please wait while we process your request.</p>";

                mysql_select_db(
                    "accounts",
                    $connection
                );

                    // Generate Account Number.
                    $AccountNumber = rand(17000, 904870);

                    // Set Account Values.
                    $GenuineUser = 0;
                    $VerifiedAdvertiser = 0;
                    $DateOfBirth =
                        $_POST["bmoth"] . "/" . $_POST["bday"] . "/" . $_POST["byear"];

                    // MD5 the Account ID.
                    $AccountID = md5($_POST["AccountID"]);
                // Create Advertiser Account.
                mysql_query(
                    "INSERT INTO accounts.advertisers (
                        'Account Number',
                        'Account ID',
                        'First Name',
                        'Last Name',
                        'Date Of Birth',
                        'Email Address',
                        'Phone Number',
                        'Street Address',
                        'City',
                        'Zip Code',
                        'State',
                        'Country',
                        'Genuine User',
                        'Verified Advertiser') VALUES (
                            '".$AccountNumber."',
                            '".$_POST["AccountID"]."',
                            '".$_POST["FirstName"]."',
                            '".$_POST["LastName"]."',
                            '".$DateOfBirth."',
                            '".$_POST["EmailAddress"]."',
                            '".$_POST["PhoneNumber"]."',
                            '".$_POST["StreetAddress"]."',
                            '".$_POST["City"]."',
                            '".$_POST["ZipCode"]."',
                            '".$_POST["State"]."',
                            '".$_POST["Country"]."',
                            '".$GenuineUser."',
                            '".$VerifiedAdvertiser."')
                ");

                // Setup Advertisement Table.


                // Assume account created successfully.
                $out =
                    "<p>Advertiser Account created.</p>";
            }
            else
            {
                die('Oh, @#%#!: ' . mysql_error());
            }
            mysql_close($connection);
        }
        else
        { 
                                    // else, display form. 
                           } ?>

`

Может ли кто-нибудь помочь мне разобраться, пожалуйста? Я был бы признателен за любую помощь.

Спасибо

Обновление Итак, мне удалось выяснить, что именно получится, благодаря всем вашим советам. Как оказалось, он не работал, потому что я использовал пробелы между именами столбцов (например, идентификатор учетной записи должен быть AccountID). Поэтому я просто удалил пробелы из столбцов таблицы, а также из php-кода.

Спасибо всем за вашу помощь!

  • 0
    поместите запрос в отдельную переменную, напечатайте / отобразите его и попробуйте запустить запрос из phpmyadmin или из консоли mysql.
  • 1
    Также проверьте наличие ошибок. В крайнем случае вы можете сделать mysql_query($query) or die(mysql_error()) ; который затем распечатает ошибку для вас. Также обратите внимание, что у вас есть огромные уязвимости SQL-инъекций в вашем коде, который вы опубликовали. Вы действительно должны использовать подготовленные операторы или, по крайней мере, mysql_real_escape_string для любого ненадежного ввода, которое входит в ваши запросы ...
Показать ещё 1 комментарий
Теги:
database
insert

3 ответа

0
Лучший ответ

Итак, мне удалось выяснить, что происходит, благодаря всем вашим советам:) Как оказалось, он не работал, потому что я использовал пробелы между именами столбцов (например, идентификатор учетной записи должен быть AccountID). Поэтому я просто удалил пробелы из столбцов таблицы, а также из php-кода.

Спасибо всем за вашу помощь!

1

У вас есть ошибка в вашем SQL-запросе. Вы получаете "аккаунт создан", потому что вы его не тестируете.

  • 0
    Я исправил проблему. Спасибо за помощь :)
1

Вам действительно нужно проверять наличие ошибок в вашем запросе. Даже что-то основное:

mysql_query($query) or die(mysql_error());

В любой момент, когда вы выполняете функцию mysql, вы должны проверять наличие ошибок или использовать метод исключения исключений (если использовать соответствующий интерфейс, поскольку функции mysql по умолчанию не генерируют исключения).

Он может быть испорчен на несколько точек.

Также, как подсказка, sprintf прекрасно работает, если вы пишете запросы.

  • 0
    Спасибо за это! Я получил сообщение об ошибке проверки правильности синтаксиса в строке 2, и тогда я понял, что, возможно, это была одинарная кавычка в верхней части запроса (перед VALUES), поэтому я удалил одинарные кавычки. Затем я получил еще одну ошибку, ту же самую вещь: «У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с« Число, Идентификатор учетной записи, Имя, Фамилия, Дата в строке 2 "
  • 0
    Возможно ли, что это происходит из-за пробелов между именами (т.е. идентификатором учетной записи и т. Д.)?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню