从PHP网页添加MySQL条目

时间:2011-11-15 22:30:58

标签: php mysql forms web

我正在开发一个Web应用程序,允许用户通过Web表单向MySQL数据库添加条目。 Web表单发布到同一页面,一些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 个答案:

答案 0 :(得分:2)

试试这个并看看它的内容:

if (!mysql_query($sql,$con))
{
    die(mysql_error());
}

答案 1 :(得分:1)

尝试插入echo mysql_error();。这应该至少为您提供查询不正确的起始位置。

答案 2 :(得分:0)

mysql_close($con)最后应该有一个分号。

检查您的日志是否有错误。

使用mysql_real_escape_string

答案 3 :(得分:0)

PHP隐藏错误。要进行调试,首先将这两行放在<?php标记

中的第一行
error_reporting(E_ALL);
ini_set('display_errors', '1');

如果错误发生在mysql中,你可以这样做:

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

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

直接在你认为可能失败的mysql查询之后。

答案 4 :(得分:0)

将您的数据库选择更改为

mysql_select_db("database name")

mysql_select_db($database);

您正在尝试选择名为“$ database”的数据库,其中美元符号为字符串,而不是该变量中的名称。 另外,使用

mysql_real_escape_string($ sql)来逃避这些变量。(避免使用sql injecion)你可以在其他评论中找到关于它的链接。

答案 5 :(得分:0)

die(mysql_error()); 会解决它。 还看看逃避。注入当前代码非常容易。

如果你不想逃避(我不知道你什么时候会这样做)你也可以使用$_POST而不是分配给变量并使用变量。

答案 6 :(得分:0)

变化

$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')";