db_query ('SELECT nid FROM uc_products'); gibt keine Ergebnisse! Warum?

7

Es gibt eine wirklich einfache Abfrage in Bezug auf den aktivierten und funktionierenden Ubercart, bei der die Aufgabe darin besteht, alle Nids aus der uc_productsTabelle abzurufen , was einfach keine Ergebnisse liefert:

$query = 'SELECT nid FROM uc_products';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($nid = db_result($result)) {
    dsm('$nid: '.$nid);
}

ABER wenn ich dieselbe Abfrage in derselben Datenbank in phpMyAdmin ausführe , funktioniert sie und gibt mir ALLE korrekten Ergebnisse (ich habe jetzt 8 Produkte).

phpMyAdmin Screenshot

ABER die folgenden Abfragen funktionieren korrekt und geben mir alle erwarteten Ergebnisse (die erste ist die seltsamste, da das vidFeld vom gleichen Typ ist, aber nur einen anderen Namen hat):

$query = 'SELECT vid FROM uc_products';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($vid = db_result($result)) {
    dsm('$vid: '.$vid);
}

$query = 'SELECT * FROM uc_products';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($row = db_fetch_object($result)) {
    dsm('$row->nid: '.$row->nid);
}

$query = 'SELECT nid FROM node';
$result = db_query($query);
dsm('===================================================');
dsm($query);
while ($nid = db_result($result)) {
    dsm('$nid: '.$nid);
}

Hier ist ein Screenshot der Testergebnisse:

Screenshot der Tests

Wie Sie sehen können, geben die ersten beiden Abfragen keine Ergebnisse zurück, während die anderen ordnungsgemäß funktionieren.
Das ist ein wirklich seltsames Problem. Ich habe die Kernmodule nicht geändert, daher verstehe ich die Situation nicht. Es spielt keine Rolle, ob ich es auf localhost oder auf meinem laufenden öffentlichen Server ausführe, das Ergebnis ist das gleiche. Dies bedeutet, dass das uc_order_condition_has_products_form()Menü Bedingte Aktionen auch nicht richtig funktioniert. Ich habe noch nie solche Probleme in Drupal gehabt.

Hat jemand eine Ahnung, wo ich mit dem Debuggen beginnen soll?

Sk8erPeter
quelle
3
Nur zu Ihrer Information, Ihr Code funktioniert perfekt für mich auf 3 Drupal 6 Ubercart-Sites (ich habe gerade Ihren Code in '/ devel / php /' kopiert / eingefügt und alle Nids wurden wie erwartet im Nachrichtenbereich ausgegeben), also ist es definitiv spezifisch für Ihre Installation. Sehr seltsam
Clive
@Clive: Danke für deine Antwort, ja, du hast absolut Recht, ich habe vergessen zu sagen, dass ich es auch in einem anderen "klaren" Drupal 6.22 (der gleichen "alten" Version) getestet habe, das ich nur zum Testen benutze, und da ist es funktioniert absolut gut. Aber ich kann mir nicht einmal vorstellen, was für ein Problem diese Version von Drupal haben könnte, da ich - soweit ich mich erinnere - die Kernmodule von Drupal nicht modifiziert habe. Also verstehe ich einfach nicht. Ich sollte mein Drupal aktualisieren, aber es erklärt immer noch nicht, warum nodeIDs funktionieren, uc_productsIDs nicht. Aber vielleicht könnte ein Update jede Art von chaotischen
Dingen
@Clive: Bitte sehen Sie meine aktualisierte Frage ... SELECT * FROM uc_productsfunktioniert perfekt wie es sollte ...: -O Das zuvor erwähnte SELECT nid FROM uc_productsfunktioniert immer noch nicht.
Sk8erPeter
@Clive: FYI, SELECT vid FROM uc_productsfunktioniert auch richtig! Warum kann Drupal so ein Problem mit dem nidFeld haben?
Sk8erPeter
3
Schalten Sie das Entwicklungsmodul ein und aktivieren Sie die Qury-Protokollierung unter admin / settings / devel. Dadurch wird angezeigt, welche Abfragen auf der Seite ausgeführt werden. Vielleicht wird diese Abfrage auf dem Weg irgendwie geändert?
greggles

Antworten:

2

Ich denke, es ist wahrscheinlich, weil Ihr erstes Ergebnis eine "0" ist und PHP dies als falsch bewertet, was verhindert, dass Ihre while-Schleife ausgeführt wird.

Ryancross
quelle
Wow, es ist lange her ... Ich kann diese Seite nicht mehr testen, aber du hast recht! : DI denke, ich habe damals nicht bemerkt, dass der nidWert des ersten wirklich gleich war 0, was nicht passieren sollte, also ist es meiner Meinung nach unerwartet (0 als Knoten-ID macht keinen Sinn, es sollte beginnen 1) - aber es kann die while-Schleife wirklich sofort stoppen. Vielen Dank! +1 und akzeptiert. :)
Sk8erPeter