【问题标题】:Insert User Data to Database with INSERT statement使用 INSERT 语句将用户数据插入数据库
【发布时间】:2011-04-06 10:03:30
【问题描述】:

来自用户表单:我正在尝试插入以下数据: 1) 名字 2) 姓氏 3) 专业 4) 毕业年份

我能够连接到数据库,并选择我需要的数据库——但我无法从表单中插入数据。我能够创建记录,但数据没有保存到数据库中。基本上,我现在正在创建空白表单。

变量 $uInput 保存用户数据。我尝试将 $uInput 传递给函数 doAction(),但我相信这就是问题所在。我试图弄清楚如何将用户数据传递给函数 doAction()。

 <?php  

    //Call function mainline
    mainline();

    // Declare the function mainline
    function mainline() {

        $uInput = getUserInput();

        $connectDb = openConnect(); // Open Database Connection
        selectDb($connectDb); // Select Database
        doAction($uInput);
        //closeConnect();
        //display();

    }

    //Declare function getUserInput ------------------------------------------------------------------------------------
    function getUserInput() {

        echo "In the function getUserInput()" . "<br/>";

        // Variables of User Input
        $idnum = $_POST["idnum"];              // id (NOTE: auto increments in database)
        $fname = $_POST["fname"];             // first name
        $lname = $_POST["lname"];            // last name
        $major = $_POST["major"];           // major
        $year = $_POST["year"];          // year
        $action = $_POST["action"];       // action (select, insert, update, delete)

        $userInput = array($idnum, $fname, $lname, $major, $year, $action);
            //echo "info from getUserInput: " . $action;    
        return $userInput;
    }


    function doAction($pUserInput) {
        // if user selects INSERT from dropdown menu, then call function insert 
       //and pass $uInput
        if ($pUserInput[5] == "ins") {
            insert($uInput);    
        }

    }

    // Create a database connection --------------------------------------------------------
    function openConnect() {
        $connection = mysql_connect("localhost", "root_user", "password");
            echo "Opened Connection!" . "<br/>";

        if(!$connection) {
            die("Database connection failed: " . mysql_error());
        }

        return $connection;
    }

    // Select a database to ---------------------------------------------------------------- 
    function selectDb($pConnectDb) {
        $dbSelect = mysql_select_db("School", $pConnectDb);
        if(!$dbSelect) {
            die("Database selection failed: " . mysql_error());
        } else {
        echo "You are in the School database! <br/>";   
        }

    }


    // function insert ---------------------------------------------------------------------
    function insert($pUInput) {

        $sql="INSERT INTO tblStudents (first_name, last_name, major, year)
              VALUES
             ('$pUInput[1]','$pUInput[2]','$pUInput[3]', '$pUInput[4]')";

            if (!mysql_query($sql))
              {
              die('Error: ' . mysql_error());
              }
            echo "1 record added";
    }

    ?> 

【问题讨论】:

  • print_r($pUInput) 的一切看起来都很酷?

标签: php sql database forms


【解决方案1】:

您的doAction() 函数有问题。您将参数作为$pUserInput 带入函数,但作为$uInput 发送到insert() 函数。

你应该这样做:

function doAction($pUserInput)
{
     // if user selects INSERT from dropdown menu, then call function insert 
     //and pass $uInput
     if ($pUserInput[5] == "ins")
     {
            insert($pUserInput); // <-- FIXED: Not using correct parameter.
     }
}

【讨论】:

  • 啊!刚注意到!谢谢,我知道它与如何传递变量有关。添加了 1 条记录:非空白!
  • /hmm,但是数据库中的年份是 0000-00-00。看起来我正在处理一个不同的问题。用户从下拉菜单中选择年份(即 2010、2011、2012 等...等...)
  • @crewof1,请为此发布一个单独的问题。
【解决方案2】:

改变插入($uInput);插入函数($pUserInput);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2016-05-19
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多