# Fehler in einfachem Programm (PHP) #dringend #Schule



## ---> (6. Apr 2016)

Sehr geehrte Community,

ich finde einfach nicht den Fehler in meinem Programm.
Ich muss bis Freitag eine dynamiche Webseite, für die Schule programmieren.
Die Note auf meinem Abschlusszeugnis hängt davon ab.

Es wird immer folgende Fehlermeldung angezeigt:

```
Fatal error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\evaluation.php on line 4
```

Hier das Programm:

Die Datei in der der Fehler auftritt (evaluation.php):

```
<?php
session_start();
$id=mysqli_connect("localhost","root","","forum") or die ("Es ist unerwarteter ein Fehler aufgetreten. MySQL nicht gestartet/gefunden werden.");
/*$SESSION[contribution]=*/$contribution=mysql_real_escape_string($id, $_POST,["contribution"]);
/*$contribution=mysql_real_escape_string($id,$_POST,["contribution"]);*/
?>
<!DOCTYPE html>
<html lang="de">
  <head>
    <title>...</title>
    <meta charset="UTF-8">
    <link href="design.css" type="text/css" rel="stylesheet" />
  </head>
  <body>
    <article>
      <section>
        <?php
          /*mysqli_query($id,"USE `forum`");*/
          mysqli_query($id, "INSERT INTO `theme` VALUES (0, '$contribution')");
        ?>
      </section>
    </article>
  </body>
</html>
```


Die Eingabemaske (input.html):

```
<!DOCTYPE html>
<html lang="de">
  <head>
    <title>Beitrag erstellen</title>
    <meta charset="UTF-8" />
    <link href="design.css" type="text/css" rel="stylesheet" />
  </head>
  <body>
    <form action="evaluation.php"  method="POST">
      <textarea
      name="contribution"
      value="contribution"
      cols="10"
      rows="10">
      </textarea>
      <br />
      <input type="submit" name="create" value="erstellen">
      </input>
    </form>
  </body>
</html>
```


Die Installationsdatei für die Datenbank (install.php):

```
<!DOCTYPE html>
<html lang="de">
  <head>
    <title></title>
    <meta charset="UTF-8">
    <style href="design.css" type="text/css" rel="stylesheet" />
  </head>
  <body>
    <?php
      $id=mysqli_connect("localhost","root","") or die ("Bei der Installation der Datenbank ist ein unerwarteter Fehler aufgetreten.");
      mysqli_query($id,"CREATE DATABASE `forum`");
      mysqli_query($id,"USE `forum`");
      mysqli_query($id,"CREATE TABLE `theme` (`theme number` INT PRIMARY KEY NOT NULL AUTO_INCREMENT,`title` TEXT NOT NULL)");
      /*mysqli_query($id,"CREATE TABLE `message` (`message number` INT PIMARY KEY NOT NULL AUTO INCRREMENT,`theme number` INT NOT NULL,`user number` INT NOT NULL,`time` DATE NOT NULL,`content` TEXT NOT NULL)")*/
    ?>
  </body>
</html>
```

Außerdem besteht das Programm noch aus einer noch leeren CSS-Datei (design.css).
Ich denke die beiden letzten Programmteile sind für den Fehler
mehr oder weniger irrelevant.

Ich habe im Internet bereits nach möglichen Lösungen gesucht. #Google
Dabei wurde jemandem in einem anderen Forum geraten zu prüfen ob der Eintrag
"Cextension=php_mysql.so"
in der Datei "php.ini" zu finden ist und ob kein ; davor steht.
Ich habe den Eintrag in der betreffenden Datei garnichterst gefunden.
Ich glaube nicht, dass der Fehler dort liegt,
aber ggf. weiß ich nicht wie man die extension ergänzt
bzw. wo ich sie reinkopieren muss
und ob dass überhaupt die richtige ist.

Ich muss das Projekt Freitag abgeben.
Helft mir Bitte.
Die Note auf meinem Abschlusszeugnis hängt davon ab.

mit freundlichen Grüßen

Euer "--->"


----------



## kneitzel (6. Apr 2016)

Du nutzt sonst ja mysqli Aufrufe - sollte das evtl. auch ein mysqli_real_escape_string Aufruf sein? Der mysql_real_escape_string Aufruf ist seit php 5.5 veraltet:
http://php.net/manual/de/function.mysql-real-escape-string.php

Was mich aber auch wundert: Da sind 3 Parameter? Die Funktionen nehmen doch eigentlich nur 2 Parameter?

Aber egal - PHP bin ich kein Experte. Das ist nur, was ich so mit meinem Wissen kenne und sehe.


----------



## ---> (6. Apr 2016)

Was kann ich tun um den Fehler zu beheben?


----------



## kneitzel (6. Apr 2016)

Den Funktionsaufruf anpassen? Name mit i probieren und das letzte Argument wegnehmen?


----------

