hawkmaster: Prüfen ob Datensatz vorhanden, rowCount doch ok bei Select ??

Beitrag lesen

Hallo zusammen,

ich möchte herausfinden ob in einer Tabelle schon ein Datensatz steht oder ob sie leer ist. Wenn leer dann Insert, wenn schon vorhanden dann Update.

Bisher hatte ich in meinen Script meist mit "mysql_num_rows" gearbeitet.
Ich möchte nun versuchen auf PDO umzustellen.

Mich würde einfach interessieren wie ihr das macht bzw. welches die beste Möglichkeit ist.
Ich habe mal folgende Möglichkeiten getestet.

1.
$result = $DBO->query("SELECT Artikel FROM  test WHERE TestID='0' ");
$sqlvalues = $result->fetch(PDO::FETCH_ASSOC);
if($sqlvalues){
//schon vorhanden, mache update..
}else{
//nichts gefunden, mache insert
}

2.
$result = $DBO->query("SELECT * FROM test WHERE testID = '{$row['ID']}'") ;
if ($result->fetchColumn() == 0) {
//schon vorhanden, mache update..
}else{
//nichts gefunden, mache insert
}

3. oder vielleicht zuerst ein Select count() voranstellen?
SELECT COUNT(id) AS anzahl FROM tabelle'...

4.
$result = $DBO->query("SELECT TestID FROM Test WHERE  ID = '10'") ;
$anzahl = $result->rowCount();

Bei der 4. Variante mit rowCount bin ich mir sehr unsicher.
Im Manual und anderen Quellen steht immer das rowCount bei einer Select Abfrage nicht funktioniert. Dies speziell auch bei MySQL.
Meine Versuche hatten aber immer das richtige Ergebnis gebracht.
Kann es sein das es mittlerweile doch funktioniert (PHP 5.2)

vielen Dank und viele Grüße
hawk