Ausgabe eines "allgemeinen" MySQL-Befehls sehen;zB analyze table
ThomasLa
- php
Hallo,
kann ich von PHP aus einen "allgemeinen" Befehl so an MySQL abschicken, dass ich auch die Ausgabe zu sehen bekomme?
Konkret meine ich z.B. "ANALYZE meine_tabelle". Wenn ich das mit mysql_query() abschicke, ist der Rückgabewert nur TRUE. MySQL selber gibt aber eine kleine Übersicht über den Erfolg zurück.
Gibt's in PHP tatsächlich keine Funktion, die einen Befehl an MySQL absetzt und die Antwort einfach als String zurückgibt??
Das kann ich ja kaum glauben - aber ich find trotzdem nix :-(
Danke!!
hi,
Konkret meine ich z.B. "ANALYZE meine_tabelle". Wenn ich das mit mysql_query() abschicke, ist der Rückgabewert nur TRUE.
Natürlich - wie bei absolut jeder anderen fehlerfreien Query, die du darüber absetzt, auch.
MySQL selber gibt aber eine kleine Übersicht über den Erfolg zurück.
Eine ANALYZE TABLE-Query gibt das zurück, was eine einfache SELECT-Query auch zurückgibt - ein Menge von Datensätzen.
Gibt's in PHP tatsächlich keine Funktion, die einen Befehl an MySQL absetzt und die Antwort einfach als String zurückgibt??
Nicht, dass ich wüsste.
Das kann ich ja kaum glauben - aber ich find trotzdem nix :-(
Aber die, mit der du das Ergebnis einer SELECT-Query auswertest, hast du doch wohl gefunden?
gruß,
wahsaga
Hallo,
Natürlich - wie bei absolut jeder anderen fehlerfreien Query, die du darüber absetzt, auch.
Sorry, aber das ist falsch - mysql_query() gibt normalerweise eine Resourcen-Kennung zurück, siehe < http://at.php.net/manual/de/function.mysql-query.php>
Eine ANALYZE TABLE-Query gibt das zurück, was eine einfache SELECT-Query auch zurückgibt - ein Menge von Datensätzen.
Das stimmt auch nicht. ANALYZE TABLE gibt so was wie das hier zurück; keine Datensätze.
----------------------------------------------
| Table | Op | Msg_type | Msg_text |
----------------------------------------------
| db.tabelle | analyze | status | OK |
----------------------------------------------
Der Msg_text kann aber z.B. auch "Table is already up to date" lauten, und genau das hätte ich eben gern von PHP aus festgestellt.
echo $begrüßung;
Natürlich - wie bei absolut jeder anderen fehlerfreien Query, die du darüber absetzt, auch.
Sorry, aber das ist falsch - mysql_query() gibt normalerweise eine Resourcen-Kennung zurück, siehe http://at.php.net/manual/de/function.mysql-query.php
Eine Ressourcenkennung wird durch PHPs automatische Typumwandlung auch als true erkannt. Da du keinen Code gepostet hast wird wahsagas Glaskugel vermutlich so etwas angezeigt haben:
if ($result = mysql_query(...)) {
// true
} else {
// false
}
Woraufhin er möglicherweise annahm, dass du so ein typumgewandeltes true meinst. Hast du tatsächlich etwas rausbekommen, das von var_dump() als "bool(true)" angezeigt wurde?
"Normalerweise" kennt mysql_query drei Rückgabewerte: false im Fehlerfall, true bei Statements, die keine Ergebnismenge zurückliefern (z.B. INSERT) und eine Ressourcen-Kennung für Statements mit Ergebnismenge.
Eine ANALYZE TABLE-Query gibt das zurück, was eine einfache SELECT-Query auch zurückgibt - ein Menge von Datensätzen.
Das stimmt auch nicht. ANALYZE TABLE gibt so was wie das hier zurück; keine Datensätze.
| Table | Op | Msg_type | Msg_text |
| db.tabelle | analyze | status | OK |
Das ist in der Tat kein Datensatz im eigentlichen Sinne. Aber es ist eine Ergebnismenge. Einer Ergebnismenge können Datensätze zu Grunde liegen, müssen aber nicht. Das Ergebnis eines SELECT COUNT(*) FROM table ist kein Datensatz, aber eine Ergebnismenge. Ergebnismengen, die ebenfalls keine Datensätze sind, bekommt man beispielsweise auch von DESCRIBE, SHOW oder eben auch von ANALYZE TABLE
Der Msg_text kann aber z.B. auch "Table is already up to date" lauten, und genau das hätte ich eben gern von PHP aus festgestellt.
Frage die Ergebnismenge in der üblichen Weise ab. Genau so wie du es nach einem SELECT machen würdest: mysql_fetch_*()
echo "$verabschiedung $name";
Danke dedlfix - so funktioniert's tatsächlich! :-)
Frage die Ergebnismenge in der üblichen Weise ab. Genau so wie du es nach einem SELECT machen würdest: mysql_fetch_*()
So hab ich's vorher eh auch probiert, aber anscheinend irgendwo einen Fehler reingebaut ;-)
Und im PHP-Manual steht, dass nur für SELECT, SHOW, DESCRIBE und EXPLAIN eine Resource-Kennung zurückgegeben wird. (Link siehe vorigen Post)
Also: Fehler von mir + Fehler im Manual => unnötiger Post hier im Forum
Ich hab's als Bug ("Documentation problem") gemeldet. (War ursprünglich ein Feature Request, bist du mich überzeugt hast, dass es dieses Feature schon gibt - deswegen ist die Bug-Beschreibung etwas verwirrend ;-)
< http://bugs.php.net/bug.php?id=40377>
Danke nochmal!!