[PHP/MSSQL] lege selectie query opvangen

Pagina: 1
Acties:

Onderwerpen


  • spider
  • Registratie: Juli 2001
  • Laatst online: 31-12-2023
Gents, ik haat dit echt. Je probleem neer dumpen, terwijl het zeer waarschijnlijk iets heel erg kleins is. Maar na een dag turen heb ik je hulp nodig.

Ik moet een db updaten. Daarin moeten personeels nummers geupdate worden. (we gaan over op een nieuwe reeks)
Het is mssql en ik (dacht) php te kennen, dus 1 + 1 is 2
PHP dat ding uitlaten lezen, cross checkje doen en dan database aanpassen. Alles in 1 soepele beweging.

Twee tabelen, 1 tabel waar de oude data in staat en die dus geupdate moet worden (employee)
en 1 database die ik speciaal heb gemaakt waar de crosslist staat (oud en nieuw pnummer)

Het probleem is, dat de zoals altijd, je data harstikke corrupt is. DB is slecht ingevuld, gegevens kloppen niet enze enze.
Waar ik nu tegen aanloop is dat er mensen in staan die allang verdwenen zijn en dus ook geen nieuw pnummer krijgen. De selectie query die ik doe, leverd dus geen enkele resultaat op. NULL of Empty. Maar hoe filter ik dat er uit ?

In stappen, dit gaat nog goed

code:
1
2
3
4
5
6
7
8
9
10
11
<?php
error_reporting(0);
$con = mssql_connect ("10.75.224.26", "admin", "");

mssql_select_db ("aeosdb", $con);
$sql= "SELECT * FROM employee WHERE (personnelnr <> 'onbekend') AND (personnelnr NOT LIKE 'TN%') AND removaldate = NULL ORDER BY personnelnr DESC";
$rs= mssql_query ($sql, $con);
while($myrow = mssql_fetch_row($rs))
    {
    $imagenumber = $myrow[17];
    $oldpnummer = $myrow[5];


Ik check hiermee, wat het oude pnummer is en dump ik in een variable.

code:
1
2
3
4
5
6
7
8
9
10
    $sql2= "SELECT * FROM newoldpnummer where oldpnummer=$oldpnummer";
    $rs2= mssql_query ($sql2, $con);

    while($myrow2 = mssql_fetch_row($rs2))
        {
        $newpnummer = $myrow2[1];
        }
    echo "global ID is: ", $imagenumber, " Oude personeels nummer is ", $oldpnummer, " nieuwe pnummer is ", $newpnummer, "<br>";
    unset($oldpnummer);
    unset($newpnummer);

Dit gaat minder goed.
Dit gaat goed, zolang er in deze databae newoldpnummer iets vind. Dus als er een oud personeels nummer gevonden wordt, dan zal er ook een nieuw nummer uit rollen.
Maar als hij niks vind, dumpt hij er ook niks uit. Krijg ik geen waarde.
en daar loop ik vast, dus hoe vis ik dat er uit, dat de quary leeg is.
Ik dacht zelf aan

code:
1
2
3
4
if ($newpnummer<1)
    {
    $newpnummer = "ombekend";
    }


of mischien }

code:
1
2
3
4
if (empty($rs2))
    {
    $newpnummer = "ombekend";
    }


Heb natuurlijk gegoogled (het is ms sql !) en hier gekeken, heb daarnaast nog een aantal collega;s proberen latig te vallen, maar dit is kennelijk erg moeilijk.
Hoef geen kant en klare oplossing, een richting is ook goed. Dan kom ik daar wel uit.

edit:typo

"Is your mother proud of you ?"


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Wat ik meestal doe bij een conversie is eerst even een backup/restore as new database uitvoeren. Vervolgens verwijder ik via verschillende queries de informatie welke niet meegenomen moet worden met de conversie.

Wat je overhoud zijn dan de juiste records en die kun je dan vrij simpel migreren naar de nieuwe database.

If it isn't broken, fix it until it is..


  • spider
  • Registratie: Juli 2001
  • Laatst online: 31-12-2023
spider schreef op woensdag 26 september 2007 @ 16:43:
Gents, ik haat dit echt. Je probleem neer dumpen, terwijl het zeer waarschijnlijk iets heel erg kleins is.
Ik zeg het,het is altijd iets kleins,
mssql_num_rows natuurlijk, helemaal vergeten.

code:
1
2
3
4
if (mssql_num_rows($rs2)==0)
    {
    $newpnummer = "onbekend";
    }


Thanks

"Is your mother proud of you ?"