[PHP + Oracle] Php setzt keine Rows in eine Oracle Tabelle

AND1

Commander
Registriert
Feb. 2002
Beiträge
2.381
Hi Jungs,

hab ne Table erstellt und er soll mir via PHP in diese Table Daten reinfetzen, tuts aber nicht, weiss einer ne Lösung?

PHP:
<HTML>
<head><title>usermanagement</title></head>
<body>
<?php
$iDBConn = OCILogon("name", "pwd", "db");

var_dump($iDBConn);

$UserId = 0;
$strFName = $_GET['fn'];
$strLName = $_GET['ln'];
$strUsername = $_GET['un'];
$strPassword = $_GET["pw"];

$AddUser = "

INSERT INTO   usermanagement
              (user_id, fname, lname,
               username, password)
VALUES        (user_id.nextval,:fname, :lname,
              :username, :password)";

$iStatement = @OCIParse($iDBConn, $AddUser);

$arrError = OCIError($iStatement);

if ($arrError['code']){
                       print $arrError['message'];
                       OCIRollback($iDBConn);
                       exit;
                      }

@OCIBindByName($iStatement, ':user_id', &$UserId, 4);
@OCIBindByName($iStatement, ':fname', &$strFName, 64);
@OCIBindByName($iStatement, ':lname', &$strLName, 64);
@OCIBindByName($iStatement, ':username', &$strUsername, 255);
@OCIBindByName($iStatement, ':password', &$strPassword, 12);
@OCIExecute($iStatement, OCI_DEFAULT);

OCICommit($iDBConn);

$GetUser = "

  SELECT      user_id,
              fname,
              lname,
              username,
              password
  FROM        usermanagement
  ORDER BY    lname ASC,
              fname ASC";

$iStatement = @OCIParse($iDBConn, $GetUser);

@OCIExecute($iStatement, OCI_DEFAULT);

?>

<table border="1" width="600">
<tr>
        <td>ID</td>
        <td>VORNAME</td>
        <td>NACHNAME</td>
        <td>USERNAME</td>
        <td>PASSWORD</td>
</tr>

<?
while (OCIFetchInto($iStatement, &$arrUser, OCI_ASSOC+OCI_RETURN_NULLS))
{
?>

<tr>
 <td><?= $arrUser['user_id'] ?></td>
 <td><?= $arrUser['fname'] ?></td>
 <td><?= $arrUser['lname'] ?></td>
 <td><?= $arrUser['username'] ?></td>
 <td><?= $arrUser['password'] ?></td>
</tr>

<?

}

?>
</table>
<br><br><br>
<form method = "get" action = "usermanagement.php">
<table border="1" width="600">
<tr>
<td><input name="vn" type="text" size="30" maxlength="30"></td><td>vorname</td>
</tr><tr>
<td><input name="nn" type="text" size="30" maxlength="30"></td><td>nachname</td>
</tr><tr>
<td><input name="un" type="text" size="30" maxlength="30"></td><td>username</td>
</tr><tr>
<td><input name="pw" type="text" size="30" maxlength="30"></td><td>password</td>
<td><input name="Absendeknopf" type="submit" value="Best&auml;tigen"></td>
</form>
</body>
</html>
 
Gibts den ne Fehlermeldung? Setz mal im SQL Befehl alles nach VALUES in der Klammer in Hochkommata.
 
Re: AW: [PHP + Oracle] Php setzt keine Rows in eine Oracle Tabelle

Gibt leider keine Fehlermeldung, prob ist, dass auf dem Server auf dem ich das Ding drauf hab nen kleinen Error im Appache gibt und der leider keine Errors ausgibt :(
 
Hi,
hast du für den Namen, Nachname, Passwort usw. CLOB oder LOB als Datentyp definiert? Wäre eigentlich sinnlos, da man mit 'nem VARCHAR2 auch bis zu 4000 (oder 2000) Zeichen speichern kann. Hierbei würde die lästige und umständliche Variablenbindung wegfallen und du könntest in einem Insert-String eine Zeile einfügen und gut. In den Klammern hinter "VALUES" gibst du einfach die Werte an und läßt das nachträgliche OCIBindByName weg. (So im Groben...)
Nochwas: Wenn du ein "@" vor die Funktionen schreibst, bekommst du keine Fehlermeldungen... (Speziell bei OCIExecute interessant)

Gruß, Gobble-G

Edit: Achja, wenn der Admin des Servers die Ausgabe der Fehlermeldungen unterdrückt, kann man auch versuchen, das wieder zu aktivieren. Standardmäßig sollte man das Recht dazu haben. Schreib dazu einfach an den Anfang des Skripts:
PHP:
ini_set("display_errors",1);
Hier der Link.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben