mysqli error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Whenever I run the following code, I get the error: "Commands out of sync;
you can't run this command now" as I try to execute my prepared Update
statement.

<?php
$fpiDataAddr = fopen('outputAddr.txt','r') or die("can not open In File ");

//Connect to mySQL server
$mysqli = new mysqli('localhost', 'user', 'pswd', 'db');
if ($mysqli->connect_error) { die('Could not connect:
'.$mysqli->connect_error); }
else{ echo "Connected successfully\n"; }

$seqno = 0;
$k = 'Kev';

$sql1 = 'SELECT UNIQUE_NUM, AM_CITY FROM db.kb_addr WHERE UNIQUE_NUM = ?';
$sth1 = $mysqli->prepare($sql1);

$sql2 = 'UPDATE db.kb_addr SET AM_CITY = ? WHERE UNIQUE_NUM = ?';
$sth2 = $mysqli->prepare($sql2);

while($inrec = fgetcsv($fpiDataAddr,0,',','"')){

    if($seqno == 0){
        $x= count($inrec);
        $arrFields = array();
        for ($y = 0; $y < $x; $y++) {
            $arrFields[$inrec[$y]] = $y; //creates associative array that
associates fields with the index in $inrec
    }

        echo "Array of Field Names From Header Record in Input data is \n";
        print_r($arrFields);
        $seqno++;
        continue;    }

    $key = 0+$inrec[$arrFields['Unique #']];

    //Select Statement
    $sth1->bind_param('i',$key);
    $sth1->execute();
    $sth1->bind_result($un,$ac);
    $sth1->fetch();

    //Update Statement
    $sth2->bind_param('si',$k,$key);
    echo "after bind:     ".$sth2->error."\nThe object error is:
$mysqli->error\n";
    $sth2->execute();
    echo "after execute:  ".$sth2->error."\nThe object error is:
$mysqli->error\n";

    if($seqno > 1000) break;
    $seqno++;
}

fclose($fpiDataAddr) or die("can not close file");

//disconnect
$sth1->close();
$sth2->close();
$mysqli->close();
?>



However, if I close $sth1 (the select statement) before executing $sth2 (the
update statement), it works, but since I just closed $sth1, I have to
prepare it again. This is pretty inefficient considering the large data set
that I'm working with and the fact that I have to prepare and close my
select statement every single time I loop through. Is there any way that I
can run these statements error-free without having to close the select
statement ($sth1) every single time I want to execute my update statement
($sth2)?

Thanks,
  Kevin

[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux