我在发帖时遇到错误。我似乎无法弄清楚。我已经多次更改脚本并仍然得到错误。错误是 插入失败:您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在#10;' 10' 10' 10' 10',',' 39; 40'' 0')'在第4行
数据来自输入值的表单,0是脚本中的计算字段。
这是脚本
<?php
$err = array();
if($_POST['doPickup'] == 'Enter Pickup')
if(empty($err)) {
$pallets_a = $_post['grade_a_pal'];
$pallets_b = $_post['grade_b_pal'];
$pallets_c = $_post['grade_c_pal'];
$pallets_cus = $_post['cus_pal'];
$companyid = $_POST['companyid'];
$sql_grd = "SELECT companyid, pu_price, grade_a_pu, grade_b_pu, grade_c_pu, custom_pu FROM company WHERE companyid = $companyid";
$result_grd=mysql_query($sql_grd) or die(mysql_error());
while ($row_grd=mysql_fetch_array($result_grd))
{
$price_a = $row_grd["grade_a_pu"];
$price_b = $row_grd["grade_b_pu"];
$price_c = $row_grd["grade_c_pu"];
$price_cus = $row_grd["custom_pu"];
}
$pallet_a_cr = $pallets_a*$price_a;
$pallet_b_cr = $pallets_b*$price_b;
$pallet_c_cr = $pallets_c*$price_c;
$pallet_cus_cr = $pallets_cus*$price_cus;
$total_credit = $pallet_a_cr + $pallet_b_cr + $pallet_c_cr + $pallet_cus_cr;
$sql_insert = "INSERT into `pickups`
(`companyid`,`pu_date`,`trail_num`,`grade_a_pal`,`grade_b_pal`,`grade_c_pal`,`cus_pal`,`pal_pu`,`credit`)
VALUES
('$_POST[companyid]','$_POST[pu_date]','$_POST[trail_num]','$_POST[grade_a_pal]',,'$_POST[grade_b_pal]','$_POST[grade_c_pal]','$_POST[cus_pal]','$_POST[pal_pu]','$total_credit')";
mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());
}
?>'
编辑:错误已修复,但计算仍无效。有什么建议吗?
答案 0 :(得分:1)
问题看起来像是:
'$_POST[grade_a_pal]',,'$_POST[grade_b_pal]'
这个双重逗号正在打破它,我敢打赌。
取出其中一个逗号。 (这也将修复可能出现的不可避免的字段和值计数。)
此外,您极易受到SQL注入攻击。您应该使用预准备语句,而不是直接将变量放在查询中。
答案 1 :(得分:1)
你有两个逗号一个接一个地跟着。你必须删除一个。
$sql_insert = "INSERT into `pickups`
(`companyid`,`pu_date`,`trail_num`,`grade_a_pal`,`grade_b_pal`,`grade_c_pal`,`cus_pal`,`pal_pu`,`credit`)
VALUES
('$_POST['companyid']','$_POST['pu_date']','$_POST['trail_num']','$_POST['grade_a_pal']','$_POST['grade_b_pal']','$_POST['grade_c_pal']','$_POST['cus_pal']','$_POST['pal_pu']','$total_credit')";
您还忘记了数组索引($_POST
)的引号,您需要添加它们。他们不会阻止PHP处理脚本,但会引发PHP警告。
此外,您仍在使用已弃用的 mysql_ *函数。您可能希望自己帮忙并迁移到PDO并使用Prepared Statements,以防止SQL注入。