Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用数组的SQL PHP更新查询_Php_Sql_Sql Server_Arrays - Fatal编程技术网

使用数组的SQL PHP更新查询

使用数组的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'.$

我正在尝试使用数组更新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'.$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]);
我从来没有做过你做的事,珀西利,但我认为这会让你走上正轨