【发布时间】:2017-12-13 17:15:57
【问题描述】:
我有一个表单,可以将多个席位发送到一个 php 文件。我创建了一个 foreach 循环将每个席位插入到 sql 中。出于某种原因,我能够获得发送它所需的所有信息,但它不会插入。
不知道是不是和外键有关?但我想做的是显示哪个电子邮件选择了哪个座位。我还想在发送到 sql 时禁用每个席位。
这是我的输出。
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->prepare("…")过程接口是 PHP 4 时代引入的mysqliAPI 的产物,不应在新代码中使用。 -
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
有点奇怪,您连续两次执行相同的查询。转置名称和值并不会真正插入不同的表;)
标签: php mysql sql-server