Neko1: Zwei SQL-Anweisungen in einer Variabel

Hallo,
ist es möglich, zwei SQL-Anweisungen in eine Variabel zu schreiben?
Z.B. würd ich gern folgendes miteinander kombinieren:
$ab_01 = "SELECT * FROM tb1";
$ab_01 = "SHOW tables from db1";

  1. Hi!

    ist es möglich, zwei SQL-Anweisungen in eine Variabel zu schreiben?

    Ja, aber das nützt dir nicht viel. Du willst sicher zwei Statements auf einmal ausführen. Und das geht nicht mit dem herkömmlichen mysql_query(). Dazu musst du komplett auf die mysqli-Extension umsteigen (zumindest für diese Abfrage) und dort mysqli_multi_query() verwenden und dich zusätzlich mit einem multiplen Resultset rumschlagen. Wenn es keine zwingenden Gründe gegen eine getrennte Ausführung gibt, würde ich nicht auf einer Multi-Query bestehen wollen.

    Lo!

    1. Hi!

      ist es möglich, zwei SQL-Anweisungen in eine Variabel zu schreiben?

      Ja, aber das nützt dir nicht viel. Du willst sicher zwei Statements auf einmal ausführen. Und das geht nicht mit dem herkömmlichen mysql_query(). Dazu musst du komplett auf die mysqli-Extension umsteigen (zumindest für diese Abfrage) und dort mysqli_multi_query() verwenden und dich zusätzlich mit einem multiplen Resultset rumschlagen. Wenn es keine zwingenden Gründe gegen eine getrennte Ausführung gibt, würde ich nicht auf einer Multi-Query bestehen wollen.

      Lo!

      Ich würd halt gerne die jeweiligen Tabellennamen ausgeben lassen und sie so als Überschrift nutzen zu können.

      Im moment schaut mein Quellcode für die Ausgabe so aus:

      if($dr_namen=="dr_grube")  
      {  
      $ausg1 = "SELECT mname, mnr, organisation FROM ma WHERE mname = 'Grube'";  
      $erg = mysql_query($ausg1) or die ("Query failed: " . mysql_error() . " Actual query: " );  
      while($row = mysql_fetch_object($erg))  
      	{  
      	echo "<center><table border='0'  bordercolor='#333333' cellpadding='0' cellspacing='0' width='60%'>";  
      	echo "<tr>";  
      	echo "<th><u>Nummer</u></th>";  
              echo "<th><u>Name</u></th>";  
              echo "<th><u>Organisation</u></th>";  
        	echo "</tr>";  
         	echo "<tr>";  
      	echo "<td width='20%' align='center'>";  
         	echo "$row->mnr";  
      	echo "</td>";  
      	echo "<td width='20%' align='center'>";  
         	echo "$row->mname";  
      	echo "</td>";  
      	echo "<td width='20%' align='center'>";  
         	echo "$row->organisation";  
      	echo "</td>";  
      	echo "</tr>";  
      	echo "</center>";  
      	}
      

      Wenn ich die Tabellennamen jedoch so einbinde, werden sie halt nach jeder Zeile der Tabelle erneut eingefügt - was natürlich nicht sinn der Sache ist.

      Das Ganze soll natürlich auch erst dann angezeigt werden, wenn ich die passenden Suchkriterien eingebe...

      Womit ich auch bei meiner zweiten Frage wäre:
      Wie kann ich mit Hilfe einer Textbox bestimmte Zeilen meiner Datenbanktabelle durchsuchen und ausgeben lassen?
      Ich hatte mir gedacht, dass ich das einfach mit ...WHERE mname = $name";
      ($name = Textbox Variabel, mname halt die Spalte der Tabelle)
      mache, allerdings bekomm ich dann immer die Fehlermeldung, dass die von mir in die Textbox eingegebene Spalte nicht vorhanden sei.

      ...

      1. Hi!

        Bitte zitiere nur die Teile, auf die du dich konkret beziehst, nicht einfach alles. Danke.

        Ich würd halt gerne die jeweiligen Tabellennamen ausgeben lassen und sie so als Überschrift nutzen zu können.

        Dann trenne deine Verarbeitung nach dem EVA-Prinzip: Eingabe - Verarbeitung - Ausgabe. Ermittle und sammle also zunächst alle Daten, die du für die Ausgabe benötigst und geh erst dann zur Ausgabe über.

        echo "<center><table border='0'  bordercolor='#333333' cellpadding='0' cellspacing='0' width='60%'>";
        echo "<tr>";

        Viele Ausgaben (besonders statischer Text) lassen sich effizienter mit der Heredoc-Syntax notieren als mit tausend echos. Andererseits ist PHP dafür augelegt, dass man statische Texte außerhalb von ?> PHP-Blöcken <?php notieren kann. Dann stehen dir Features wie Syntax-Unterstützung in Editoren zur Verfügung, was bei echo-Texten in der Regel nicht der Fall ist.

        echo "$row->mnr";

        Die Anführungszeichen um reine Variablen sind überflüssig. Desweiteren fehlt die kontextgerechte Behandlung des Wertes.

        Das Ganze soll natürlich auch erst dann angezeigt werden, wenn ich die passenden Suchkriterien eingebe...

        Dafür gibt es die Fallunterscheidungs-Kontrollstruktur (if ... else ...)

        Wie kann ich mit Hilfe einer Textbox bestimmte Zeilen meiner Datenbanktabelle durchsuchen und ausgeben lassen?
        Ich hatte mir gedacht, dass ich das einfach mit ...WHERE mname = $name";
        ($name = Textbox Variabel, mname halt die Spalte der Tabelle)
        mache, allerdings bekomm ich dann immer die Fehlermeldung, dass die von mir in die Textbox eingegebene Spalte nicht vorhanden sei.

        Beschäftige dich mit der SQL-Syntax. Formuliere erst einmal ein Statement ohne PHP-Variablen drin:

        SELECT feldnamenliste FROM tabelle WHERE feldname = foo

        Wenn du nun nach einem String-Wert suchen willst, wie notierst du dann diesen String-Wert, damit SQL ihn von einem Feldnamen unterscheiden kann? Vielleicht in Anführungszeichen? Zusatzfrage: Was passiert, wenn in diesem Stringwert selbst Anführungszeichen enthalten sind? Kontextgerechte Behandlung nicht vergessen!

        Lo!