Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP将数据插入数据库_Php_Mysql_Arrays_Database - Fatal编程技术网

用PHP将数据插入数据库

用PHP将数据插入数据库,php,mysql,arrays,database,Php,Mysql,Arrays,Database,问题是:在用户输入的数据经过filter_输入过滤并保存到关联数组后,如何将其发送到数据库。我尝试这样做的方式是,即使我用过滤的、经过净化的输入填充数组,我也会收到错误,表示过滤的输入数组的每个字段都有未定义的索引。此外,如果有人知道另一种或更好的方法,请告诉我。所讨论的数据库是MariaDB mySQL方言。所有内容都放置在服务器上,并使用分配给服务器的phpmyadmin运行 <?php require_once("Filtering.php"); $filter = new Fil

问题是:在用户输入的数据经过filter_输入过滤并保存到关联数组后,如何将其发送到数据库。我尝试这样做的方式是,即使我用过滤的、经过净化的输入填充数组,我也会收到错误,表示过滤的输入数组的每个字段都有未定义的索引。此外,如果有人知道另一种或更好的方法,请告诉我。所讨论的数据库是MariaDB mySQL方言。所有内容都放置在服务器上,并使用分配给服务器的phpmyadmin运行

<?php require_once("Filtering.php");

$filter = new Filtering();

$filter->connect();

if (isset($_POST['submit'])){
    $filter->insertAll();
}

?>
<!DOCTYPE html>
<html lang="en">

<head>
</head>

<body>

<div class="container-fluid">
    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" name="order" novalidate>
        <fieldset>
            <legend>Order Summary</legend>
            <br>
            <div class="row">
                <div class="col-12 d-flex flex-row">
                    <div class="col-4">
                        <span><strong>Product Name</strong></span>
                    </div>
                    <div class="col-2 justify-content-center">
                        <span><strong>Quantity</strong></span>
                    </div>
                    <div class="col-3 justify-content-center">
                        <span><strong>Price</strong></span>
                    </div>
                </div>
            </div>
            <br>
            <div class="row">
                <div class="col-12 d-flex flex-row">
                    <div class="col-4">
                        <span>Gigabyte GTX1060 G1 Gaming 3GB GDDR5</span>
                    </div>
                    <div class="col-2 justify-content-center">
                        <select class="form-control col-3" id="quantity">
                        </select>
                    </div>
                    <div class="col-3 justify-content-center">
                        <span id="price">$ 349.99</span>
                    </div>
                </div>
            </div>
        </fieldset>
        <br>
        <fieldset>
            <legend>Customer Information</legend>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-2">
                        <label class="col-form-label">First Name<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control" placeholder="Enter your first name" type="text" name="firstName">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterFirstName()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty.</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-2">
                        <label class="col-form-label">Last Name<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control" placeholder="Enter your last name" type="text" name="lastName">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterLastName()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty.</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-2">
                        <label class="col-form-label">E-mail<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control" placeholder="Enter your e-mail" type="text" name="email">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterEmail()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty.</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-2">
                        <label class="col-form-label">Number<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control noButton" placeholder="Enter your number" type="number"
                               name="number">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterNumber()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty.</small>
                             </div>
                          </div>";
                }
            }
            ?>
        </fieldset>
        <br>
        <br>
        <fieldset>
            <legend>Payment Information</legend>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">Card Number<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control noButton" placeholder="xxxx-xxxx-xxxx-xxxx" type="number"
                               name="cardNum">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterCard()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty. Must not be longer than 16 digits</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">Expiration Date<span class="required">*</span></label>
                    </div>
                    <div class="col-2">
                        <input class="form-control" placeholder="MM/YY" type="text" name="expDate">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterExpDate()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty. Enter a valid date format: 'MM/YY'</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">Security Number<span class="required">*</span></label>
                    </div>
                    <div class="col-2">
                        <input class="form-control noButton" placeholder="xxxz" type="number" name="secNum">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterSecurityNum()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty. Must be at most 4 digits long</small>
                             </div>
                          </div>";
                }
            }
            ?>
        </fieldset>
        <br>
        <br>
        <fieldset>
            <legend>Delivery Information</legend>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <label class="form-check-label">
                        <strong>Delivery Option</strong>
                    </label>
                </div>
            </div>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <label class="form-check-label">
                        <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1"
                               value="option1" checked>
                        Standard Delivery - Free of charge
                    </label>
                </div>
                <div class="col-8 d-flex flex-row">
                    <label class="form-check-label">
                        <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1"
                               value="option1">
                        Express Delivery - $ 5.99
                    </label>
                </div>
            </div>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">Address Line 1<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control" placeholder="Enter your address" type="text" name="address">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterAddress()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty.</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">Address Line 2</label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control" placeholder="Optional" type="text" name="address2">
                    </div>
                </div>
            </div>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">Country</label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control" value="Croatia" type="text" name="country" disabled>
                    </div>
                </div>
            </div>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">County</label>
                    </div>
                    <div class="col-auto">
                        <select class="custom-select" id="county">
                        </select>
                    </div>
                </div>
            </div>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">City<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control" placeholder="Enter your city" type="text" name="city">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterCity()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty.</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-3">
                        <label class="col-form-label">Zipcode<span class="required">*</span></label>
                    </div>
                    <div class="col-auto">
                        <input class="form-control noButton" placeholder="Enter your zipcode" type="number" name="zip">
                    </div>
                </div>
            </div>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                if (!$filter->filterZip()) {
                    echo "<div class='row'>
                             <div class='col-5'>
                                  <small class='text-muted ml-3 warning'>! Field must not be empty. Must be at most 5 digits long</small>
                             </div>
                          </div>";
                }
            }
            ?>
            <br>
            <div class="col-auto">
                <label class="custom-control custom-checkbox mb-2 mr-sm-2 mb-sm-0">
                    <input type="checkbox" class="custom-control-input">
                    <span class="custom-control-indicator"></span>
                    <span class="custom-control-description">Receive mails about news and special offers</span>
                </label>
            </div>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-auto">
                        <label class="col-form-label">Additional Information</label>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <div class="col-5">
                        <textarea class="form-control" id="txtarea" rows="5" name="additionalInfo"></textarea>
                    </div>
                </div>
            </div>
            <br>
            <div class="row">
                <div class="col-8 d-flex flex-row">
                    <input class="btn btn-primary col-2 ml-3" type="submit" name="submit" value="Submit">
                </div>
            </div>
        </fieldset>
    </form>
</div>
<script src="js/script.js"></script>
</body>

</html>

有几个问题(参见注释),但这里的主要问题是调用函数的顺序

各个过滤函数嵌入在表单本身中,因此在这一行之后称为

$filter->insertAll();
所以实际上数组仍然是空的,函数试图插入空值

您需要重新安排,以便在尝试插入值之前调用各个函数。

有几个问题(请参阅注释),但这里的主要问题是调用函数的顺序

各个过滤函数嵌入在表单本身中,因此在这一行之后称为

$filter->insertAll();
所以实际上数组仍然是空的,函数试图插入空值


您需要重新排列,以便在尝试插入值之前调用各个函数。

您的第一个问题是:

class Filtering {
    ...
    var $connection;

    public function connect() {

        $this->connection= mysqli_connect($this->DBHostName, $this->DBUserName, $this->DBPassword, $this->DBName);
您可以看到,
$this->
意味着在当前类中查找此变量,因此数据库连接正在查找:

class Filtering {
    var $connection = "something"; // var is optional and not really needed.
    $DBHostName = "host";
    $DBUserName = "user"; 
    $DBPassword = "pass"; 
   // Etc.
您尚未显示您已设置了这些连接详细信息,以便脚本永远不会连接到数据库


接下来,您将了解全球使用情况。因此,使用
global
是不明智的,您根本不需要使用此代码

您正在引用已在类中建立的值;因此,只需使用神奇的
$this->
功能(令人惊讶的是,我找不到任何专门针对
$this
的像样的参考资料),您就可以轻松地使用它了,这样您就不必对这些价值进行戈壁化,而是可以在课堂上保持整洁

例如:

  public function filterFirstName() {
        $this->filtered_inputs['firstName'] = "something";

您要求的问题: 其次;您的
var\u dump($this->filtered\u输入)问题不输出数据,在变量被赋予任何值之前调用并转储变量

阅读表单/HTML代码;您正在调用
$filter->insertAll()之前编写,调用
filterFirstName()
函数,实际将所有值保存到变量中


将表单提交到表单来源的同一页面是不好的表单;如果我刷新页面,则每次都会重新提交
$\u POST
ed数据。(这个代码库还有许多其他问题)


此外,您似乎没有任何代码将数据发送到MySQL数据库,可能您只是没有显示它,但您确实有SQL字符串(
$query
),但您应该有一条使用此字符串的指令:

 $this->connection->query($query);
这是上面的一个非常基本的示例,您需要探索并使用它


简化您的代码: 改进是一项持续不断的工作,您的问题似乎是您正在为表单提供给PHP的每个输入编写
hardcode
;废话;这既重复又浪费

请尝试使用运行以下内容中的每个元素:


这段代码可以进一步简化,提高效率,但我只想给你们一个开始;现在,该函数将用每个POST语句无需填充您的
->filtered_inputs
数组,并将检查
firstName
键不是零长度字符串。

您的第一个问题是:

class Filtering {
    ...
    var $connection;

    public function connect() {

        $this->connection= mysqli_connect($this->DBHostName, $this->DBUserName, $this->DBPassword, $this->DBName);
您可以看到,
$this->
意味着在当前类中查找此变量,因此数据库连接正在查找:

class Filtering {
    var $connection = "something"; // var is optional and not really needed.
    $DBHostName = "host";
    $DBUserName = "user"; 
    $DBPassword = "pass"; 
   // Etc.
您尚未显示您已设置了这些连接详细信息,以便脚本永远不会连接到数据库


接下来,您将了解全球使用情况。因此,使用
global
是不明智的,您根本不需要使用此代码

您正在引用已在类中建立的值;因此,只需使用神奇的
$this->
功能(令人惊讶的是,我找不到任何专门针对
$this
的像样的参考资料),您就可以轻松地使用它了,这样您就不必对这些价值进行戈壁化,而是可以在课堂上保持整洁

例如:

  public function filterFirstName() {
        $this->filtered_inputs['firstName'] = "something";

您要求的问题: 其次;您的
var\u dump($this->filtered\u输入)问题不输出数据,在变量被赋予任何值之前调用并转储变量

阅读表单/HTML代码;您正在调用
$filter->insertAll()之前编写,调用
filterFirstName()
函数,实际将所有值保存到变量中


将表单提交到表单来源的同一页面是不好的表单;如果我刷新页面,则每次都会重新提交
$\u POST
ed数据。(这个代码库还有许多其他问题)


此外,您似乎没有任何代码将数据发送到MySQL数据库,可能您只是没有显示它,但您确实有SQL字符串(
$query
),但您应该有一条使用此字符串的指令:

 $this->connection->query($query);
这是上面的一个非常基本的示例,您需要探索并使用它


简化您的代码: 改进是一项持续不断的工作,您的问题似乎是您正在为表单提供给PHP的每个输入编写
hardcode
;废话;这既重复又浪费

请尝试使用运行以下内容中的每个元素:

T