使用数组的SQL PHP更新查询
我正在尝试使用数组更新MS Access表这是我的代码使用数组的SQL PHP更新查询,php,sql,sql-server,arrays,Php,Sql,Sql Server,Arrays,我正在尝试使用数组更新MS Access表这是我的代码 for($i = 1; $i<=$rows; $i++) { $seedsize[$i] = $_POST['packageType'.$i]; $RefNo[$i] = $_POST['field'.$i]; (int)$qtyOrder[$i] = $_POST['ordered'.$i]; (int)$qtyDel[$i] = $_POST['delivered'.$
for($i = 1; $i<=$rows; $i++)
{
$seedsize[$i] = $_POST['packageType'.$i];
$RefNo[$i] = $_POST['field'.$i];
(int)$qtyOrder[$i] = $_POST['ordered'.$i];
(int)$qtyDel[$i] = $_POST['delivered'.$i];
$unitPrice[$i] = $_POST['unitPriceDtl'.$i];
$ref2[$i] = $_POST['grade'.$i];
//$date[$i] = $_POST['myDate'.$i];
}
$InvoiceID = $_SESSION['InvoiceID'];
$sql = "UPDATE
[Tbl_Invoice_Details]
SET
[Seed Size]=?,
[RefNo]=?,
[Quantity Ordered]=?,
[Quantity Delivered]=?, [Ref2]=?,
[PricePerUnit]=?
WHERE
[Invoice_ID]=?";
$data = $conn2->prepare($sql);
for($x = 1; $x <= 4; $x++)
{
$data->execute(array($seedsize[$x], $RefNo[$x], $qtyOrder[$x], $qtyDel[$x], $unitPrice[$x], $ref2[$x], $InvoiceID));
echo $RefNo[$x]."<br/>";
}
for($i=1;$iprepare($sql);
对于($x=1;$x执行(数组($seedsize[$x],$RefNo[$x],$qtyOrder[$x],$qtyDel[$x],$unitPrice[$x],$ref2[$x],$InvoiceID));
回声$RefNo[$x]。“
”;
}
我收到以下错误:“cast规范的字符值无效:-3030[Microsoft][ODBC Microsoft Access驱动程序]条件表达式中的数据类型不匹配。”
谢谢您的帮助!您确认数据中没有任何空值了吗?空值可能导致强制转换错误 我建议强制转换所有数值:
for($i = 1; $i<=$rows; $i++)
{
$seedsize[$i] = $_POST['packageType' . $i]; // Not sure about this one
$RefNo[$i] = (int)$_POST['field' . $i];
$qtyOrder[$i] = (int)$_POST['ordered' . $i];
$qtyDel[$i] = (int)$_POST['delivered' . $i];
$unitPrice[$i] = (float)$_POST['unitPriceDtl' . $i];
$ref2[$i] = $_POST['grade' . $i]; // Not sure about this one
//$date[$i] = $_POST['myDate' .$i];
}
for($i=1;$i4为什么在第二个for循环中硬编码?只是好奇而已
我认为问题在于(int)$qtyOrder[$I]或(int)$qtyDel[$I]或其他任何东西。错误在于,它期望获得的数据不是它所获得的数据,因此,当ABC只需要123(数字)时,你就在某处发送了ABC。你应该对发布的信息进行任何处理,可能是这样的:
$qtyOrder[$i] = intval($_POST['ordered'.$i]);
$qtyDel[$i] = intval($_POST['delivered'.$i]);
我从来没有做过你做的事,珀西利,但我认为这会让你走上正轨