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!