PHP计算mysql错误

时间:2015-08-30 21:45:46

标签: php mysql post

我在发帖时遇到错误。我似乎无法弄清楚。我已经多次更改脚本并仍然得到错误。错误是 插入失败:您的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());
}
?>'

编辑:错误已修复,但计算仍无效。有什么建议吗?

2 个答案:

答案 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注入。