db_fetch_array funkt nicht
Eingetragen von t.sebesta (72)
am 11.09.2007 - 14:26 Uhr in
am 11.09.2007 - 14:26 Uhr in
folgender Code:
if (($RecordMapping != "") AND ($RecordMapping != '{00000000-0000-0000-0000-000000000000}')) {
//$RecordLIDnew = dsfdb_namen_get_RecordLIDbyRecordGid("personnamebasics_web", $RecordMapping);
_dsfdb_db_set_active('dsfdb');
$table = "personnamebasics_web";
$sSql = "SELECT
t.RecordLID,
t.RecordGID
FROM $table t
WHERE t.RecordGID = '$RecordMapping'";
$res = db_query($sSql);
$rowresult = mysql_fetch_array($res);
$RecordLID = $rowresult['RecordLID'];
if (($RecordLID == "") OR ($RecordLID == 0) OR !$RecordLID) {
$RecordLID =false;
}
_dsfdb_db_set_active('default');
}
$res liefert eine resource (119) Type of Mysql
$rowresult liefert "False"
warum?
Gruß
Thomas
- Anmelden oder Registrieren um Kommentare zu schreiben
Korrektur: "mysql_fetch_array
am 11.09.2007 - 14:29 Uhr
Korrektur:
"mysql_fetch_array($res)" wurde natürlich durch "db_fetch_array($res)" ersetzt.
Gruß
Thomas
gefixt, durch
am 11.09.2007 - 16:09 Uhr
gefixt, durch
function dsfdb_namen_get_RecordLIDbyRecordGid($table, $RecordGID) {
_dsfdb_db_set_active('dsfdb');
$sSql = "SELECT
t.RecordLID AS RecordLID
FROM $table t
WHERE t.RecordGID LIKE '%$RecordGID%'";
$result = db_query($sSql);
$rowresult = db_fetch_array($result);
$RecordLID = $rowresult['RecordLID'];
if (!$rowresult) {
$RecordLID =false;
}
_dsfdb_db_set_active('default');
return $RecordLID;
}
weil,
die WHERE-Clausel sich auf einen Textinhalt (nach dem Muster {00000000-0000-0000-0000-000000000000}) bezieht und daher mit dem LIKE-Opterator gearbeitet werden muss.
Ich habe bisher mit den ADODB Datenbankklassen gearbeitet und diese dürften diesen Fehler anscheinend (-ich hab's nicht geprüft, aber da ich solche Abfragen zu Hauf gecodet habe vermute ich es-) abfangen und die Abfrage in eine "LIKE"-Abfrage umwandeln.
Gruß
Thomas