PHP-Projekt/Testdatenbank: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 96: Zeile 96:
## Connecting with MySQL, activating database "md"; in case of a
## Connecting with MySQL, activating database "md"; in case of a
## connection error, show a complete HTML document with a short error message
## connection error, show a complete HTML document with a short error message
function mysqlconnection($mysqldatabase,$passwordfile) {
function mysqlconnection($mysqldatabase, $passwordfile) {
   ## In order to increase the security of this project,  
   ## In order to increase the security of this project,  
   ## move ...password.inc.php to another directory which is protected against
   ## move database.md.password.inc.php to another directory which is protected
   ## general download by .htaccess and change the include line accordingly
   ## against general download by .htaccess and change the include line accordingly
   require($passwordfile);
   require($passwordfile);
   $connection = mysql_connect($mysqlserver, $mysqluser, $mysqlpassword);
  ## "@" suppresses PHP error messages in case of connection error
   $connection = @mysql_connect($mysqlhost, $mysqluser, $mysqlpassword);
   if ($connection) {
   if ($connection) {
     mysql_select_db($mysqldatabase);
     mysql_select_db($mysqldatabase);
Zeile 148: Zeile 149:
}
}


function mysqlselect($resultfields,$tarray) {
function mysqlselect($resultfields, $tarray) {
   ## number of clauses
   ## number of clauses
   $noc    = count($tarray["clause"]);
   $noc    = count($tarray["clause"]);

Version vom 31. März 2009, 20:43 Uhr

Auf Rechner "kanzler".

Anlegen der Datenbank "md".

$ mysql -u root -p
mysql> create database md;
mysql> quit

Anlegen Verzeichnis mit PHP-Skripten.

$ cd /WWW
$ sudo mkdir md && sudo chown mik:mik md
base/database.md.base.inc.php
Erfordert base/server.mysql.inc.php
Bereitgestellte Variablen
  • $database
  • $connection
Verwendete Funktionen
  • mysqlconnection()
  • mysqldie()
<?php

### Name          database.md.base.inc.php
### Description   Standard variables and functions with database "md"

require("server.mysql.inc.php");

### VARIABLES ###

$database   = "md";
$connection = mysqlconnection("{$database}",
                              "database.{$database}.password.inc.php")
                or mysqldie("Unable to connect");
?>
base/database.md.password.inc.php
Diese Datei sollte später in ein anderes Verzeichnis verschoben werden, das mit ".htaccess" gegen allgemeines Herunterladen geschützt ist. Die include-Zeilen in den anderen Dateien müssen dann entsprechend angepasst werden.
Bereitgestellte Variablen
  • $mysqluser
  • $mysqlpassword
  • $mysqlserver
<?php

### Name          database.md.password.inc.php
### Description   

### VARIABLES ###

## Doesn't work if $mysqlhost = "kanzler"
## "localhost" or "127.0.0.1" or "" are OK
## also check "bind-address" in file "/etc/mysql/my.cnf"

$mysqlhost     = "localhost";   # name of host on which Mysql is running
$mysqluser     = "root";        # Mysql user
$mysqlpassword = "xxxxxx";      # password
?>
base/server.mysql.inc.php
Bereitgestellte Funktionen
  • mysqlconnection()
  • mysqldie()
  • mysqlinsert()
  • mysqlselect()
Verwendete Variablen
  • $mysqluser
  • $mysqlpassword
  • $mysqlserver
<?php

## Name          server.mysql.inc.php
## Description   Basic MySQL input and output functions


### FUNCTIONS ###

## Connecting with MySQL, activating database "md"; in case of a
## connection error, show a complete HTML document with a short error message
function mysqlconnection($mysqldatabase, $passwordfile) {
  ## In order to increase the security of this project, 
  ## move database.md.password.inc.php to another directory which is protected
  ## against general download by .htaccess and change the include line accordingly
  require($passwordfile);
  ## "@" suppresses PHP error messages in case of connection error
  $connection = @mysql_connect($mysqlhost, $mysqluser, $mysqlpassword);
  if ($connection) {
    mysql_select_db($mysqldatabase);
    return $connection;
  }
  else {
    echo "<html>";
    echo "<head>";
    echo "<title>No connection</title>";
    echo "</head>";
    echo "<body>";
    echo "<p>No connection to database</p>";
    echo "</body>";
    echo "</html>";
    exit();
  }
}

function mysqldie($errortext)
{
  $message = mysql_error();
  $number = mysql_errno();
  return  "[{$errortext}] ( {$number} : {$message} )<br />\n";
  exit;
}

function mysqlinsert($tarray) {
  ## number of insert fields
  $noif   = count($tarray["insert"]);
  $insert = "insert into {$tarray["t"]} (";
  for ($i = 0; $i < $noif; $i++) {
    $insert .= $tarray["fname"][$tarray["insert"][$i]];
    if ($i < $noif - 1) {
      $insert .= ",";
    }
  }
  $insert .= ") values (";
  for ($i = 0; $i < $noif; $i++) {
    $insert .= "'{$tarray["fvalue"][$tarray["insert"][$i]]}'";
    if ($i < $noif - 1) {
      $insert .= ",";
    }
  }
  $insert .= ")";
  return $insert;
}

function mysqlselect($resultfields, $tarray) {
  ## number of clauses
  $noc    = count($tarray["clause"]);
  ## number of select fields
  $nosf   = count($resultfields);
  $select = "select ";
  for ($i = 0; $i < $nosf; $i++) {
    $select .= $tarray["fname"][$resultfields[$i]];
    if ($i < $nosf - 1) {
      $select .= ",";
    }
  }
  $select .= " from {$tarray["t"]} where ";
  for ($i = 0; $i < $noc; $i++) {
    $select .= $tarray["fname"][$tarray["clause"][$i]];
    $select .= " = '{$tarray["fvalue"][$tarray["clause"][$i]]}'";
    if ($i < $noc - 1) {
      $select .= " and ";
    }
  }
  return $select;
}

?>

Apache-Errorlog unter "/var/log/apache2/error.log"