PHP + Oracle 8i

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP + Oracle 8i

    HI!
    Oracle 8i DB
    Apache 1.3.1.9 WebServer
    PHP 4.0
    Ich habe folgendes Problem:
    Ich kann über einen PHP Skript eine Tabelle anlegen und löschen, kann jedoch keine Insert, SELECT und DELETE Befehle absetzen!!!

    Mein Skript sieht foldgendermaßen aus:

    $c1 = ocilogon("system","manager",$db);

    //funktioniert!!!
    function create_table($conn,$Tab)
    { $stmt = ociparse($conn,"create table czahn.$Tab (test
    varchar2(64))");
    ociexecute($stmt);
    echo $conn." created table $Tab." ;
    }
    //funktioniert NICHT!!!
    function insert_data($conn,$Tab,$value)
    { $stmt = ociparse($conn,"insert into czahn.$Tab values($value)");
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn." inserted hallo\n\n";
    }

    //funktioniert NICHT!!!
    function select_data($conn)
    { $stmt = ociparse($conn,"select * from czahn.hallo");
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn."----selecting\n\n";
    while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">\n\n";
    echo $conn."----done\n\n";
    }

    select_data($c1)


    Hoffentlich kann mir jemand helfen !!

    Danke
    MFG KRIZ

  • #2
    welche Fehlermeldungen werden dir ausgegeben?
    Berni

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Fehlermeldungen werden keine Ausgegeben!!
      Das ist ja das seltsame!!!
      beim Select befehl wird folgendes ausgegeben:
      Resource id #5----selecting Resource id #5 Resource id #5 Resource id #5----done
      doch werden keine Werte ausgegeben!!
      Beim insert Befehl wird gar nix ausgegeben!!
      und in der Datenbank auch nix eingetragen!!!

      mfg KRIZ

      Kommentar


      • #4
        laß doch mal das OCI_DEFAULT sowohl beim insert als auch beim select weg. Dadurch wird das Kommando doch gar nicht endgültig. Falls es das nicht ist, kannst du mal schauen, ob die $conn auch bis in die Funktion richtig übergeben wird. Vielleicht fehlt ja auch die Connection. Ja, äh, mehr fällt mir dazu auch gerade nicht ein. Ach, falls du autoincrement benutzt, brauchst du für das insert auch eine Sequenze.

        So, viel Glück

        Kommentar


        • #5
          Ah, hab gerade erst deine Antwort gelesen, deutet eigentlich alles auf das OCI_DEFAULT hin.

          Kommentar


          • #6
            Also die Insert und Delete Befehle funktionieren jetzt einwandfrei!!!
            Lag am OCI_Default!!!
            Die Select Anweisung setzt er noch nicht ab!
            Aber ich denke, daß liegt einfach an der Syntax!!
            Danke erstmal!!!

            mfg KRIZ

            Kommentar


            • #7
              Dein Select funktioniert wohl nicht, da du zwar dein query parst mit OCIParse in $stmt --> dann kommt ein OCIExecute, aber dieses Kommando übergibts du ja nirgends. Wenn du dann per OCIFetch auf $stmt zugreifst, hast du da ja nicht den OCIExecute "drin":

              function select_data($conn)
              {
              $stmt = ociparse($conn,"select * from czahn.hallo");
              $stmt2 = ociexecute($stmt);
              echo $conn."----selecting\n\n";
              while (ocifetch($stmt2))
              echo $conn." <".ociresult($stmt2,"TEST").">\n\n";
              echo $conn."----done\n\n";
              }

              habs nicht ausprobiert, aber ich denke, die Richtung stimmt...

              Kommentar


              • #8
                Vielen Dank noch mal für eure Hilfe!!!
                Habe das Select problem jetzt so gelöst:

                function select_all2($conn,$tab)
                {
                $stmt = ociparse($conn,"select * from $tab");
                ociexecute($stmt);
                $nrows = OCIFetchStatement($stmt, $result);
                reset($result);
                print "<TABLE BORDER=\"1\">\n";
                print "<TR>\n";
                while ( list( $key, $val ) = each( $result ) )
                {
                print "<TH>$key</TH>\n";
                }
                print "</TR>\n";
                for ( $i = 0; $i < $nrows; $i++ )
                {
                reset($result);
                print "<TR>\n";
                while ( $column = each($result) )
                {
                $data = $column['value'];
                print "<TD>$data[$i]</TD>\n";
                }
                print "</TR>\n";
                }
                print "</TABLE>\n";
                echo $nrows; echo " Zeilen ausgewählt";
                }

                Kommentar

                Lädt...
                X