【问题标题】:inserting data into sql table using foreach php使用foreach php将数据插入sql表
【发布时间】:2017-12-13 17:15:57
【问题描述】:

我有一个表单,可以将多个席位发送到一个 php 文件。我创建了一个 foreach 循环将每个席位插入到 sql 中。出于某种原因,我能够获得发送它所需的所有信息,但它不会插入。

不知道是不是和外键有关?但我想做的是显示哪个电子邮件选择了哪个座位。我还想在发送到 sql 时禁用每个席位。

sql side

这是我的输出。

    You are currently in database admin.


admin@airways.com
1A
1B
1C
Data added successfully.
Back to seating.

这是我的 flightselect.php

            <?php
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    include_once 'includes/db_connect.php';
    include_once 'includes/functions.php';
    sec_session_start();

if (login_check($mysqli) == true) {
    $logged = 'in';
} else {
    $logged = 'out';
}
                $username = $_SESSION['username'];
                echo  '<p>You are currently '.$logged. ' database '.$username. '.</p><br>';

                $getemail = mysqli_query($mysqli, "SELECT email FROM members WHERE username = '$username' ");
                $email = '';
                while($gear = mysqli_fetch_array( $getemail )) {
                    echo $gear['email'];
                    $email = $gear['email'];
                } 

                echo $gear."<br>";

    if(isset($_POST['seatme'])){
        if(!empty($_POST['flight'])){
            foreach($_POST['flight'] as $key=>$selected){
                echo $selected."<br>";
                $result = mysqli_query($mysqli, "INSERT INTO seating (seat_id, email, flight_id) 
                                                    VALUES ('$selected', '$gear', '1' )");
            }
        }
    }
        echo "<font color='green'>Data added successfully.";
        echo "<br/><a href='user.php'>Back to seating.</a>";
?> 

【问题讨论】:

  • 请包含代码而不是屏幕截图。
  • 您收到什么错误消息或您看到什么证据表明您的代码不起作用?
  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 过程接口是 PHP 4 时代引入的mysqli API 的产物,不应在新代码中使用。
  • 警告:使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 有点奇怪,您连续两次执行相同的查询。转置名称和值并不会真正插入不同的表;)

标签: php mysql sql-server


【解决方案1】:

您需要在 VALUES 关键字后加一个括号...

       if (!mysqli_query($mysqli, "INSERT INTO seating (seat_id, email, flight_id) 
                                   VALUES ('$selected', '$gear', '1' )"))  {
                 printf("Error: %s\n", $mysqli->error);
       }

您还应该了解准备好的语句,因为它们使您的 SQL 更加安全。

【讨论】:

  • 我刚试了你说的,没用,数据没有传入sql。可能是因为外键吗?还是什么?
  • $selected 的值在数据库中定义为数字(字段 seat_id),但您尝试传递“3B”。
  • 我刚刚将我的 sql 更改为 varchar50。然后尝试再次提交。它仍然没有工作。我也将我的代码更新为它的外观。
  • 我刚刚更新了代码,看看它是否产生了有用的东西(错误会很有帮助)
  • 我更新了我的输出,但没有显示任何有用的代码。我不知道为什么它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
相关资源
最近更新 更多