Php 你能告诉我这段代码有什么问题吗

Php 你能告诉我这段代码有什么问题吗,php,mysql,Php,Mysql,你能告诉我这个代码的问题是什么吗 <?php include('config.php'); $name=$_POST['name']; $sms=$_POST['sms']; $os=$_POST['os']; $nop=$_POST['nop']; $dl=$_POST['dl']; $tapb=$_POST['tapb']; $date=$_POST['date']; $calls=$_POST['calls']; $ft=$_POST['ft']; $train=$_POST['tr

你能告诉我这个代码的问题是什么吗

<?php
include('config.php');
$name=$_POST['name'];
$sms=$_POST['sms'];
$os=$_POST['os'];
$nop=$_POST['nop'];
$dl=$_POST['dl'];
$tapb=$_POST['tapb'];
$date=$_POST['date'];
$calls=$_POST['calls'];
$ft=$_POST['ft'];
$train=$_POST['train'];
$tds=$_POST['tds'];
$ws=$_POST['ws'];
$airl=$_POST['airl'];
$comm=$_POST['comm'];
$tid=$_POST['tid'];
$ial=$_POST['ial'];
$tamt=$_POST['tamt'];
$btype=$_POST['btype'];
$from=$_POST['from'];
$cuspay=$_POST['cuspay'];
$comment=$_POST['comment'];
$to=$_POST['to'];
$pays=$_POST['pays'];
$payee=$_POST['payee'];
$jdate=$_POST['jdate'];
$payment=$_POST['payment'];
$rv=$_POST['rv'];
$rvia=$_POST['rvia'];
$redate=$_POST['redate'];
$mpay=$_POST['mpay'];
$total=$_POST['total'];
$totalr=$_POST['totalr'];

$result=mysql_query ("INSERT INTO booking (name, sms, out_standing, no_of_pax, delivery, tkt_amt_payed_by, booked_date, calls, flight_time, flight_train, tds, wish_sms, air_lines, commiss, transation_id, indian_airline, tkt_amt, booking_type, from, customer_payment, comment, to, payment_status, payee, journy_date, payment_date, return_date, mode_of_payment, return_via1, return_via2, total, total_received)
VALUES ('$name', '$sms', '$os','$nop','$dl','$tapb','$date','$calls','$train','$ft','$train','$tds','$ws','$airl','$comm','$tid','$ial','$tamt','$btype','$from','$cuspay','$comment','$to','$pays','$payee','$jdate','$payment','$redate','$mpay','$rv','$rvia','$total','$totalr')") or die("Query failed : " . mysql_error());
header('Location: booking.php');  
mysql_close($con);

?>
很多错误

您没有像@Damien所指出的那样清理查询参数 您直接从$\u POST使用日期,而不检查日期格式
我只是懒得继续…

我实际上花了很多时间查看查询。。。行值“$name”、“$sms”、“$os”、“$nop”、“$dl”、“$tapb”、“$date”、“$calls”、“$train”、“$ft”、“$train”,则有$train两次。我猜第一个是打字错误,你应该删除它。列数和值数不匹配


正如其他人所说,这里还有很多错误…

您的值与字段不匹配。您有32个字段,但有33个值

我怀疑你忘记了字段定义中*flight_train*和tds之间的字段


这段代码还有很多错误,请参考注释。

这里有一段稍微好一点的代码:

<?php
include 'config.php';

$keys = array('name', 'sms', 'os', ...); // Put in the rest of the values yourself

$values = array();

foreach($keys as $key) {
    if(!isset($_POST[$key])) {
        // handle missing input, do validation etc
    }
    else
        $values[] = "'" . mysql_real_escape_string($_POST[$key]) . "'";
}

$query = sprintf("INSERT INTO booking (%s) VALUES (%s)", implode($keys, ', '), implode($values ', '));

$result = mysql_query($query);
mysql_close($con);

if(!$result)
    die(mysql_error());
else
    header('Location: booking.php');  
?>

就是你没有清理你的查询。顺便说一句,是什么错误?你到底犯了什么错误?哎哟,太难看了。第一,我们需要知道你的错误。第二,请给我们一个原因,为什么你要采取张贴的价值观,并注入到一个查询的权利!!!都德,使用foreach$\u POST作为$key=>$value{$$key=$value}你正在连接/选择数据库吗?你犯了什么错误?这很容易受到sql注入的攻击re:mysql\u在死后关闭:当脚本死后,连接将由PHP作为清理工作的一部分关闭,脚本的mysql\u关闭将永远不会运行。这不是问题。剩下的都同意了。嗯,没错。。。文档中明确指出,通常不需要使用mysql_close,。Tks!