Leif Neland skrev:
> Jeg skal opdatere en mysqldatabase med værdier fra en mssql-database.
> Metode, pseudo
> Foreach(q1=query("SELECT varenr FROM mysql_tabel WHERE pris=0")) {
> q2=query("SELECT pris FROM mssql_tabel WHERE varenr=q1['varenr']")
> query("UPDATE mysql_tabel SET pris=q2['pris']
> WHERE varenr=q1['varenr']")
> }
>
> php:
>
> // Forbind til mssql med PDO
> $_db_conn = new PDO('dblib:host=x;dbname=x;charset=utf8;' ,
> 'bruger','password');
>
> // Prepare, bind parametre og resultater
> $sql=";
> $s_hentpris=$_db_conn->prepare("SELECT pris FROM produkter
> WHERE id=:vareid");
> $s_hentpris->bindparam(':vareid',$vareid,PDO::PARAM_INT);
> $s_hentpris->bindcolumn('pris',$pris);
>
> // Forbind til mysql med mysqli
> $mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);
>
>
> // prepare mysqli statements
> $s_hentvare = $mysqli->stmt_init();
> $s_hentvare->prepare("SELECT distinct vareid FROM mytab
> WHERE pris=0");
> $s_hentvare->bind_result($vareid);
>
> $s_retpris = $mysqli->stmt_init();
> $s_retpris->prepare("UPDATE mytab SET pris=? WHERE vareid=?");
> $s_retpris->bind_param("di",$pris,$vareid);
>
> $s_hentvare->execute();
> while ($row=$s_hentvare->fetch()) {
>
> $s_hentpris->execute();
> $s_hentpris->fetch();
> if (!($s_retpris->execute())) {echo $s_retpris->error."<br>";}
> // *** Giver fejl: Commands out of sync; you can't run this command now
> // ***
> };
>
> Kan jeg ikke have alle parametre og resultater 'bind'ede udenfor løkken
> lave en løkke over hver hentvare->fetch, med en hentpris->execute og fetch og
> en retpris->execute?
>
> Eller er det et problem at retpris vil opdatere samme tabel, som hentvare har
> åben?
>
> Leif
Jeg aner intet om PDO...
Men i mysqli skal bind_result() kaldes efter execute(), men før
fetch().
Der er altså ingen variable til resultatet i din kode -> out of sync.
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk