1

I am totally lost as to what is wrong with my script. The JSON data is coming in correctly and the variables $i and $current are all what they should be at every stage in the forloop.

It seems to keep updating my database with the id, so in the case where id is 11, it will update all columns with the number 11.

Here is my script:

if($mode == 'SAVE_BUYING_ROW')
{   
    $JSON = (array)$JSON ;

    include('pdoconnect.php') ;
    $result = $dbh->prepare("UPDATE parts_trading_instructions
                 SET quantity = ?, supplierRef = ?, currencyRef = ?, 
                             net = ?, vat = ?, shippingNet = ?,
                 shippingVat = ?, direct = ?, ebayItemNumber = ?
                 WHERE id = ?") ;
    $i = 0 ;
    foreach($JSON as $current) {
        $current = (string)$current ;
        if($i == 0)
        {
            $i++ ;
            continue ;
        }

            $result->bindParam($i, $current, PDO::PARAM_STR) ;  
        $i++ ;
    }

$result->execute() ;

}

Can anyone see where I am going wrong?

4

1 回答 1

5

Use bindValue instead of bindParam. bindParam takes a reference to a variable and only reads its value when executing the query. bindValue takes a value immediately.

于 2012-05-17T09:45:46.127 回答