PHP MySQL код не публикуется в базе данных? - PullRequest
1 голос
/ 07 марта 2012

Я работаю над тем, чтобы данные, взятые из формы, отправлялись в базу данных, однако всякий раз, когда я отправляю данные, ошибок не возникает, но мои данные никогда не появляются в моей базе данных.Может ли кто-нибудь помочь мне с информацией о том, что я мог сделать неправильно?Я использую phpMyAdmin для просмотра моей таблицы.Спасибо, Стивен

<?php

$user= $_POST["txtUser"];
$fName= $_POST["txtFname"];
$lName= $_POST["txtLname"];
$email= $_POST["txtEmail"];
$date= date("r"); 



$dbh=mysql_connect('webdb.uvm.edu','swakita','MYPASSWORD');

if (!$dbh)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("SWAKITA", $dbh);

if (isset($_POST['butSubmit'])) {
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES (" . $user . "," . $fName .     "," . $Lname . ", '4', '0', $date, $email)");
mysql_close();
print $user;
}
?>

РЕДАКТИРОВАТЬ Эта ошибка выдается: у вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '' в строке 1

Вот мой код в настоящее время:

<?php

$user= $_POST["txtUser"];
$fName= $_POST["txtFname"];
$lName= $_POST["txtLname"];
$email= $_POST["txtEmail"];
$date= date("r"); 



$dbh=mysql_connect('webdb.uvm.edu','swakita','efaemaey');

if (!$dbh)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db('SWAKITA', $dbh);

if (isset($_POST['butSubmit'])) {
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES (' mysql_real_escape_string($user)', 'mysql_real_escape_string($fName)', 'mysql_real_escape_string($Lname)', '4', '0', 'mysql_real_escape_string($date)', 'mysql_real_escape_string($email)'");
if (mysql_errno()) {
echo $sql . "<br/>\n" . mysql_error();
}
mysql_close();
print $user;
}
?>

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ Я пропускал скобки после «mysql_real_escape_string ($ email)», но теперь он публикует «mysql_real_escape_string (Example First Name)» вместо просто значения.Что я теперь не так с моими скобками?

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Если вы используете поля, поступающие из запроса POST, непосредственно в запросе, вы уязвимы для SQL-инъекции , сначала избегайте их.

$user = mysql_real_escape_string($_POST["txtUser"]);
...

Чтобы увидеть проблему, проверьте результат mysql_query

mysql_query(...);
if (mysql_errno()) {
    echo $sql . "<br/>\n" . mysql_error();
}

Мне кажется, проблема в том, что вы не ставите кавычки вокруг полей, таких как пользователь.

VALUES (" . $user . "," . $fName . ", ...

должно быть:

VALUES ('" . $user . "', '" . $fName . "', ...

или проще:

VALUES('$user', '$fName', ...

Если вы заключите вашу строку в двойные кавычки ", вы можете использовать переменную $ внутри строки, и они будут оценены, в то время как если вы используете строку, разделенную одинарными кавычками ', она буквально напечатает переменную $.

1 голос
/ 07 марта 2012
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('" . mysql_real_escape_string($user) . "','" . mysql_real_escape_string($fName) .     "','" . mysql_real_escape_string($Lname) . "', '4', '0', '".mysql_real_escape_string($date)."', '".mysql_real_escape_string($email')."'");

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

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