如何从php中添加变量到mysql表中

时间:2016-01-16 23:42:37

标签: php html mysql

好的,我的目标是让人们能够选择那里的时间表。她是迄今为止的代码

<?php

//if form has been submitted process it
if(isset($_POST['submit'])){

    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "jesuitschedule";

    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = 'INSERT INTO schedule (Saturdaymorning, Saturdayafternoon, Sundaymorning, Sundayafternoon, weekday) VALUES (:Saturdaymorning, :Saturdayafternoon, :Sundaymorning, :Sundayafternoon, :weekday)';
        // use exec() because no results are returned
        $conn->exec($sql);
        echo "New record created successfully";
        }
    catch(PDOException $e)
        {
        echo $sql . "<br>" . $e->getMessage();
        }

    $conn = null;
}

//define page title
$title = 'schedule';

//include header template
require('layout/header.php');
?><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>schedule</title>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="style/main.css">
</head>
<body>

<div class="container">

    <div class="row">

        <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
            <form role="form" method="post" action="" autocomplete="off">
                <h2>Please Select your schedule</h2>
                <hr>


                <div class="form-group">
                    <input type="checkbox" name="Saturdamorning" id="Satmor" class="form-control input-lg" placeholder="User Name" value="yes" tabindex="1">Saturday Morning <br>
                </div>
                <div class="form-group">
                    <input type="checkbox" name="Saturdayafternoon" id="Sataft" class="form-control input-lg" placeholder="S" value="yes" tabindex="2">Saturday Afternoon <br>
                </div>
                <div class="form-group">
                    <input type="checkbox" name="Sundaymorning" id="Sunmor" class="form-control input-lg" placeholder="S" value="yes" tabindex="3">Sunday afternoon <br>
                </div>
                <div class="form-group">
                    <input type="checkbox" name="Sundayafternoon" id="Sataft" class="form-control input-lg" placeholder="S" value="yes" tabindex="4">Sunday Morning <br>
                </div>
                <div class="form-group">
                    <input type="checkbox" name="weekday" id="email" class="form-control input-lg" placeholder="S" value="yes" tabindex="5">weekday <br>
                </div>


                <div class="row">
                    <div class="col-xs-6 col-md-6"><input type="submit" name="submit" value="Register" class="btn btn-primary btn-block btn-lg" tabindex="6"></div>
                </div>
            </form>
        </div>
    </div>

</div>

</body>
</html>

当我运行我的代码时,它没有任何错误,但是当我检查表时,我得到的只是空行。代码添加了一组新的行,只是不向它们添加数据。我试图添加是,或者如果他们不选择它,则保持空白。任何帮助都会非常感谢。

1 个答案:

答案 0 :(得分:1)

正如Fred -ii-所指出的,你对你的陈述没有任何约束。这是您使用预准备语句编写的代码。我也对代码进行了评论,以解释我的立场

if(isset($_POST['submit'])){

    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "jesuitschedule";

    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // You have a sql statement, but attempting to insert non-existant values. So you'll either
        // wind up with an error, those values given in the statement inserted into the table,
        // or just empty values.
        //$sql = 'INSERT INTO schedule (Saturdaymorning, Saturdayafternoon, Sundaymorning, Sundayafternoon, weekday) VALUES (:Saturdaymorning, :Saturdayafternoon, :Sundaymorning, :Sundayafternoon, :weekday)';

        // Create a prepared statement, let's you easily bind parameters
        $stmt = $con->prepare(
            'INSERT INTO schedule (
                Saturdaymorning, Saturdayafternoon, Sundaymorning, Sundayafternoon, weekday
                ) VALUES (
                :Saturdaymorning, :Saturdayafternoon, :Sundaymorning, :Sundayafternoon, :weekday
                )';
        );

        // use exec() because no results are returned
        //$conn->exec($sql); // You're executing a statement with no bound parameters

        // You can use bindParam, but I find this method a tad easier
        // Take the stmt created above, and bind the values to the parameters given
        // in the statement, BUT, also execute. :)
        $stmt->execute(array(
            ':Saturdaymorning' => 'value',
            ':Saturdayafternoon' => 'value',
            ':Sundaymorning' => 'value',
            ':Sundayafternoon' => 'value',
            ':weekday' => 'value'
        ));
        echo "New record created successfully";
        }
    catch(PDOException $e)
        {
        echo $sql . "<br>" . $e->getMessage();
        }

    $conn = null;
}

如果您想了解更多相关信息,请查看PHP网站上的PDO页面,这是我提取修复程序的地方:PHP: PDO - Manual