Итак, я настраиваю таблицу с помощью браузера запросов 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-кода.
Спасибо всем за вашу помощь!
Итак, мне удалось выяснить, что происходит, благодаря всем вашим советам:) Как оказалось, он не работал, потому что я использовал пробелы между именами столбцов (например, идентификатор учетной записи должен быть AccountID). Поэтому я просто удалил пробелы из столбцов таблицы, а также из php-кода.
Спасибо всем за вашу помощь!
У вас есть ошибка в вашем SQL-запросе. Вы получаете "аккаунт создан", потому что вы его не тестируете.
Вам действительно нужно проверять наличие ошибок в вашем запросе. Даже что-то основное:
mysql_query($query) or die(mysql_error());
В любой момент, когда вы выполняете функцию mysql, вы должны проверять наличие ошибок или использовать метод исключения исключений (если использовать соответствующий интерфейс, поскольку функции mysql по умолчанию не генерируют исключения).
Он может быть испорчен на несколько точек.
Также, как подсказка, sprintf
прекрасно работает, если вы пишете запросы.
mysql_query($query) or die(mysql_error())
; который затем распечатает ошибку для вас. Также обратите внимание, что у вас есть огромные уязвимости SQL-инъекций в вашем коде, который вы опубликовали. Вы действительно должны использовать подготовленные операторы или, по крайней мере,mysql_real_escape_string
для любого ненадежного ввода, которое входит в ваши запросы ...