【问题标题】:SQL PHP UPDATE query using an array使用数组的 SQL PHP UPDATE 查询
【发布时间】:2014-09-24 21:26:48
【问题描述】:

我正在尝试使用数组更新 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/>"; 
    }

我收到此错误“强制转换规范的字符值无效:-3030 [Microsoft][ODBC Microsoft Access Driver] 标准表达式中的数据类型不匹配。”

感谢您的帮助!

【问题讨论】:

    标签: php sql sql-server arrays


    【解决方案1】:

    您是否确认数据中不存在任何空值?空值可能会导致转换错误。

    我建议转换所有数值:

    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];
    }
    

    请注意,演员表应该在赋值运算符的右侧。

    【讨论】:

      【解决方案2】:

      为什么 4 在第二个 for 循环中被硬编码?只是好奇。

      我认为问题在于 (int)$qtyOrder[$i] 或 (int)$qtyDel[$i] 或其他任何东西。错误是说它期望得到的数据不是它得到的数据,所以当它只想要 123(数字)时,你在某个地方发送了 ABC。您应该对已发布的信息进行任何处理,可能类似于:

      $qtyOrder[$i] = intval($_POST['ordered'.$i]);
      $qtyDel[$i] = intval($_POST['delivered'.$i]);
      

      我从来没有准确地完成你所做的事情,但我认为这会让你走上正轨。 Here is the PHP manual page I looked at.

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多