Добавить запись MySQL с веб-страницы PHP - PullRequest
0 голосов
/ 16 ноября 2011

Я занимаюсь разработкой веб-приложения, которое позволяет пользователю добавлять записи в базу данных MySQL через веб-форму.Веб-форма отправляет на ту же страницу, некоторый код PHP собирает эти данные и отправляет их в MySQL.По какой-то причине ничто никогда не добирается до MySQL.Это код, который у меня до сих пор не работает:

    <?php
    include("config.inc.php");
    $Name=$_POST['AddName'];
    $Group=$_POST['AddGroup'];
    $Grade=$_POST['AddGrade'];
    $Position=$_POST['AddPosition'];
    $Email=$_POST['AddEmail'];
    $HomeAddress=$_POST['AddHomeAddress'];
    $City=$_POST['AddCity'];
    $State="SC";
    $Zip=$_POST['AddZIP'];
    $CellPhone=$_POST['AddCellNumber'];
    $HomePhone=$_POST['AddHomeNumber'];
    $FirstPeriod=$_POST['AddFirstPeriod'];
    $SecondPeriod=$_POST['AddSecondPeriod'];
    $ThirdPeriod=$_POST['AddThirdPeriod'];
    $FourthPeriod=$_POST['AddFourthPeriod'];
    $FifthPeriod=$_POST['AddFifthPeriod'];
    $SixthPeriod=$_POST['AddSixthPeriod'];
    $SeventhPeriod=$_POST['AddSeventhPeriod'];
    $Homeroom=$_POST['AddHomeroom'];
    $dbpassword=$_POST['AddPassword'];

    $con = mysql_connect("127.0.0.1","$username","******");
    if (!$con)
      {
      die();
      }        

    mysql_select_db("$database", $con);
    $sql="INSERT INTO names     (Name,Grp,Grade,Position,Email,HomeAddress,City,State,Zip,CellPhone,HomePhone,FirstPeriod,SecondPeriod,ThirdPeriod,FourthPeriod,FifthPeriod,SixthPeriod,SeventhPeriod,Homeroom)
    VALUES('$Name','$Group','$Grade','$Position','$Email','$HomeAddress,'$City','$State','$Zip','$CellPhone','$HomePhone','$FirstPeriod','$SecondPeriod','$ThirdPeriod','$FourthPeriod','$FifthPeriod','$SixthPeriod','$SeventhPeriod','$Homeroom')";

    if (!mysql_query($sql,$con))
      {
      die();
      }
    echo "1 record added";

    mysql_close($con)
    ?>
            </body>
    </html>

Ответы [ 7 ]

2 голосов
/ 16 ноября 2011

Попробуйте и посмотрите, что там написано:

if (!mysql_query($sql,$con))
{
    die(mysql_error());
}
1 голос
/ 16 ноября 2011

Попробуйте вставить echo mysql_error();.Это должно дать вам хотя бы отправную точку, где ваш запрос неверен.

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

изменение

$sql="INSERT INTO names     (Name,Grp,Grade,Position,Email,HomeAddress,City,State,Zip,CellPhone,HomePhone,FirstPeriod,SecondPeriod,ThirdPeriod,FourthPeriod,FifthPeriod,SixthPeriod,SeventhPeriod,Homeroom)
    VALUES('$Name','$Group','$Grade','$Position','$Email','$HomeAddress,'$City','$State','$Zip','$CellPhone','$HomePhone','$FirstPeriod','$SecondPeriod','$ThirdPeriod','$FourthPeriod','$FifthPeriod','$SixthPeriod','$SeventhPeriod','$Homeroom')";

до

$sql="INSERT INTO names     (Name,Grp,Grade,Position,Email,HomeAddress,City,State,Zip,CellPhone,HomePhone,FirstPeriod,SecondPeriod,ThirdPeriod,FourthPeriod,FifthPeriod,SixthPeriod,SeventhPeriod,Homeroom)
    VALUES('$Name','$Group','$Grade','$Position','$Email','$HomeAddress','$City','$State','$Zip','$CellPhone','$HomePhone','$FirstPeriod','$SecondPeriod','$ThirdPeriod','$FourthPeriod','$FifthPeriod','$SixthPeriod','$SeventhPeriod','$Homeroom')";
0 голосов
/ 16 ноября 2011

die(mysql_error()); это исправит.Также взгляните на побег.Это было бы очень легко внедрить в текущий код.

Если вы не собираетесь бежать (я не знаю, когда вы это сделаете), вы также можете использовать $_POST вместо назначенияпеременная и с помощью переменной.

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

изменить выбор базы данных на

mysql_select_db("database name")

или

mysql_select_db($database);

вы пытаетесь выбрать базу данных с именем "$ database" со знаком доллара в виде строки, а не именив этой переменной.также используйте

mysql_real_escape_string ($ sql) для экранирования этих переменных. (избегая sql injecion) вы можете найти ссылки на него в других комментариях.

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

PHP скрывает ошибки.Для отладки начните с размещения этих двух строк в качестве первых строк в теге <?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

Также в случае, если ошибка была в mysql, вы можете сделать:1008 *

или

print_r(mysql_fetch_array(mysql_query("SHOW ERRORS", $con)));

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

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

mysql_close($con) должен содержать точку с запятой в конце.

проверить журнал на наличие ошибок.

использовать mysql_real_escape_string

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