Seite 1 von 2

PHP: Datenbank

Verfasst: Mi Feb 03, 2010 7:27 pm
von naums
Wie kann ich in die Datenbank schreiben???
Formular:

Code: Alles auswählen

<form name="newGuestBookEntry" action="newguesttodb.php" method="post" width="100%">
<pre>
Anezigename: <input type="text" size="20" name="user" value="'.$username.'">
             <textarea type="editor" cols="50" rows="5" name="text">'.$text.'</textarea>
<input type="submit" value="Absenden" name="send">
</pre>
</form>
Der Skript der schreiben soll:

Code: Alles auswählen

<?php
  $hoster=$_POST['user'];
  if (array_key_exists('text',$_POST))
  {
      $entry=$_POST['text'];
  }
  else 
  {
      echo('<SCRIPT LANGUAGE="JavaScript">location.href="index.php?position=newGuest&err=falseEntry&usr='.$hoster.'";</SCRIPT>');
  };
  if ( array_key_exists('user',$_POST))
  {
      $hoster=$_POST['user'];
  }
  else
  {
      echo('<SCRIPT LANGUAGE="JavaScript">location.href="index.php?position=newGuest&err=falseName&text='.$entry.'";</SCRIPT>');
  };
 $db = new mysqli('localhost', 'root', '', 'racing');
 $abfrage = $db->query("SELECT
    id
 FROM
    `guestbook`");
 $a=1;
 while ($guestbook = $abfrage->fetch_assoc())
 {
    $guestID[$a]=$guestbook['id'];
    $a++;
 };
 $entryID=count($guestID);
 $entryID=$entryID+1;
 $paste = $db->query("INSERT INTO `guestbook` (
    `id` ,
    `entry` ,
    `hoster` ,
    `date`)
VALUES (
    '".$entryID."',
    '".$entry."',
    '".$hoster."',
    '".date('d. m. Y')."'");
 
  echo('<SCRIPT LANGUAGE="JavaScript">location.href="index.php?position=guestbook#'.$entryID.'";</SCRIPT>');
?>
id=int, alles andre String.

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 7:31 pm
von naums
Update:

Skript was schreiben soll:

Code: Alles auswählen

<?php
  $hoster=$_POST['user'];
  if (array_key_exists('text',$_POST))
  {
      $entry=$_POST['text'];
  }
  else 
  {
      echo('<SCRIPT LANGUAGE="JavaScript">location.href="index.php?position=newGuest&err=falseEntry&usr='.$hoster.'";</SCRIPT>');
  };
  if ( array_key_exists('user',$_POST))
  {
      $hoster=$_POST['user'];
  }
  else
  {
      echo('<SCRIPT LANGUAGE="JavaScript">location.href="index.php?position=newGuest&err=falseName&text='.$entry.'";</SCRIPT>');
  };
 $db = new mysqli('localhost', 'root', '', 'racing');
 $abfrage = $db->query("SELECT
    id
 FROM
    `guestbook`");
 $a=1;
 while ($guestbook = $abfrage->fetch_assoc())
 {
    $guestID[$a]=$guestbook['id'];
    $a++;
 };
 $entryID=count($guestID);
 $entryID=$entryID+1;
 $paste = $db->query("INSERT INTO `guestbook` (
    `id` ,
    `entry` ,
    `hoster` ,
    `date`)
VALUES (
   \ '".$entryID."\',
   \ '".$entry."\',
   \ '".$hoster."\',
   \ #".date('d. m. Y')."\'");
 
  echo('<SCRIPT LANGUAGE="JavaScript">location.href="index.php?position=guestbook#'.$entryID.'";</SCRIPT>');
?>
Es wird nichts in die DB geschrieben!

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 7:36 pm
von Xin
naums hat geschrieben:Update:

Skript was schreiben soll:

Code: Alles auswählen

VALUES (
   \ '".$entryID."\',
   \ '".$entry."\',
   \ '".$hoster."\',
   \ #".date('d. m. Y')."\'");
Es wird nichts in die DB geschrieben!
Schau Dir das mal genau an... ansonsten lass Dir den SQL Ausdruck mal in eine Variable schreiben und gib ihn aus.

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 8:16 pm
von naums
öhm... häh???

also das "#" sollte das nicht sein, hab ich auch noch durch ein ' ersetzt

Und... PHPmyAdmin gibt mir den PHP Code folgendermaßen aus, zum Einfügen von Datensätzen:

Code: Alles auswählen

$sql = "INSERT INTO `racing`.`guestbook` (`id`, `entry`, `hoster`, `date`) VALUES (\'12\', \'halo 2\', \'halo 3 ODST\', \'nowadays\');";

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 8:18 pm
von naums
Verbesserung:

Code: Alles auswählen

 $paste = $db->query("INSERT INTO `guestbook` (
    `id` ,
    `entry` ,
    `hoster` ,
    `date`)
VALUES (
   \ '".$entryID."\',
   \ '".$entry."\',
   \ '".$hoster."\',
   \ '".date('d. m. Y')."\');");
geht aber immernoch nix.

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 8:20 pm
von Xin
Ich habe Dir eben gesagt, Du sollst Dir den String in eine Variable packen und ausgeben. Hast Du das gemacht?

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 8:22 pm
von Dirty Oerti
Ich weiß nicht, warum es nicht funktioniert, ich kann dir nur sagen, dass das SO sehr unsicher ist, da durch deinen Code leicht eine SQL-Incjetion möglich wird.
http://de.wikipedia.org/wiki/SQL-Injection#PHP

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 8:23 pm
von Xin
Dirty Oerti hat geschrieben:Ich weiß nicht, warum es nicht funktioniert
Ich kann Dir sagen, warum Du nicht sieht, warum es nicht funktioniert... der Grund ist eben nicht zu sehen ^^

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 8:36 pm
von naums
ich hab das ganze in eine Variable gepackt und über echo ausgegeben... und mit die(); gestoppt.

Es kommt ja nicht mal ne fehlermeldung... egal.. wo ich stoppe.

Re: PHP: Datenbank

Verfasst: Mi Feb 03, 2010 10:23 pm
von Xin
naums hat geschrieben:ich hab das ganze in eine Variable gepackt und über echo ausgegeben... und mit die(); gestoppt.
Okay.... und was kam raus... hast Du Dir das mal angeguckt und Dir mal überlegt, ob das das ist, was Du Dir wünschst?
naums hat geschrieben:Es kommt ja nicht mal ne fehlermeldung... egal.. wo ich stoppe.
Wenn Du eine Sprache suchst, die Dich unterstützt, dann ist PHP wohl nicht die erste Wahl. Du hast einen SQL-Fehler, weil Du hinter dem \ ein Leerzeichen hast. Deswegen dürfte die Ausgabe auch nicht dem entsprechen, was Du bei der Ausgabe erwarten solltest.