View erstellen bei MYSQL (PHPMYADMIN)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

select * from table <- normale selekt Anweisung create view VIEWNAME as select * form table <- erzeugt für obige Anweisung einen View select * from VIEWNAME <- obige selekt Anweisung über Umwege des Views

Bei MySQL 5.1.x gibt es Probleme bezüglich der Berechtigungen. Es kann sein dass du trotz korrekter Syntax keine Views erstellen kannst, weil dir "angeblich" die Berechtigung fehlt. Das ist ein Fehlverhalten von Mysql und wurde auch schon in neueren Versionen korrigiert.

Gruß

vielen Dank

durch zusammen klicken geht das nicht oder ?

0
@sponge9394

mittels myphpadmin? Da kenne ich jetzt nicht alle Versionen, aber meiner Ansicht nach - nein. Beim mysql Benchmark hättest du eine view Unterstützung dabei. Aber auch da wird es mit dem zusammen Klicken schwer.

Vor allem kannst du einen View ja auch ein "where" mitgeben: create view VIEWNAME as select * from table where id = 20 Das würde auch funktionieren.

0

In phpmyadmin auf das Tab "SQL" gehen und folgendes eingeben (natürlich an deine Situation angepasst):

CREATE VIEW testview AS SELECT a, b FROM testtable

Datenbankprojekt: php/MySQL Fehlermeldung: Fatal error: Uncaught Error: Call to undefined function mysql_fetch_row() in C:\xampp2\htdocs\Autorloeschen.php:15?

Das Ziel ist es eine Datenbank über phpmyadmin zu erstellen und diese mit php und mysql anzuzeigen, Datensätze einzufügen, zu ändern und löschen zu können. Anzeigen und einfügen klappt bei mir bereits, nun harkts beim Löschen. Noch nicht mal mein Lehrer hat eine Idee dazu. Es handelt sich um ein Buchlagersystem. Das heißt es gibt Autoren, Büchertitel... In diesem konkreten Teil geht es nur um die Tabelle der Autoren und darum einen löschen zu können.

Der Quelltext von Autoloeschen.php:

 <form action='Autorloeschen2.php'
  method='post'>
 <table border='1'>

<?php

include_once ("Funktionen.php"); $sql="SELECT * FROM autor"; $result = db_query($sql) ;

while ($row=mysql_fetch_row($result)) { echo "\n";

echo ""; foreach ($row as $i) { echo "$i\n"; } echo "\n"; }

?>

Funktionen.php:

<?php

function db_connect() { $dbserver = "localhost"; $dbuser = "root"; $dbpasswort = ""; $dbname = "buchlager"; $dbh = mysqli_connect ($dbserver,$dbuser,$dbpasswort); mysqli_select_db ($dbh ,$dbname); return $dbh;
}

function db_query($sql) { $dbh=db_connect(); $result=mysqli_query ($dbh ,$sql); db_close();

}

function db_close() { $dbserver = "localhost"; $dbuser = "root"; $dbpasswort = ""; $dbname = "buchlager"; $dbh = mysqli_connect ($dbserver,$dbuser,$dbpasswort); mysqli_select_db ($dbh ,$dbname); return $dbh; mysqli_close($dbh); } ?>

Autorloeschen2.php:

<html>
  <body bgcolor='#cccccc'>

Ein oder mehrere Autoren werden gelöscht.

<?php

$loeschen=$_POST["loeschen"];

$menge="("; foreach ($loeschen as $i) { $menge=$menge . "$i,"; } $menge=substr($menge, 0, -1); $menge=$menge . ")";

include_once ("Funktionen.php");

$sql="DELETE FROM autor WHERE ID_Autor IN $menge;";

db_query($sql); ?>

...zur Frage

Kann ich gleichzeitig einen Wert ändern und auslesen (SQL)?

Ich möchte eine Tabelle erstellen in die verschiedene Werte eingetragen werden sollen. Darunter gibt es eine Spalte mit dem Namen "ID". Diese ID soll immer eins höher als die zuletzt hinzugefügte ID sein. Da IDs aber auch wieder gelöscht werden können, habe ich mir überlegt dass man ein Eintrag erstellt welcher die ID 0 besitzt

Die Tabelle besitzt noch eine zweite Zeile namens "Content". Wenn man jetzt einen neuen Eintrag macht, soll der Content des Eintrages mit der ID 0 um 1 erhöht werden, außerdem soll der neue Eintrag als ID den neuen wert des Contents bekommen:

Tabelle vorher

ID| Content

0 | 10


Tabelle nacher

ID| Content

0 | 11

11| "Ich mag Kekse"

Da dieser Code auch funktionieren soll, wenn viele Leute gleichzeitig neue Einträge erstellen, kommt das UPDATE von mySQL ganz gelegen:

UPDATE table_name SET content =content+1 WHERE ID=0

Hiermit wird schonmal verhindert, dass wenn zwei Leute gleichzeitig einen Eintrag erstellen, die ID nur um 1 erhöht wird.

Jetzt soll aber gleichzeitig der content bei ID=0 ausgelesen werden. Wenn man die anweisungen nacheinander ausliest kann es sein, dass benutzer 1 den wert bekommt der durch benutzer 2 entstanden ist (wenn sie gleichzeitig einen neuen Eintrag machen). (zumindest wenn man nach dem oben genannten code den Content mit SELECT ausließt.)

Wie kann man also mit MySQL in einer Zeile einen Wert ändern und gleichzeitig auslesen? in diesem Fall soll der Content bei ID=0 um eins erhöht werden und gleichzeitig soll der gleiche Content ausgelesen werden. (Dabei ist es egal ob man den Wert von vor der Addition oder den von danach bekommt, da man ja dann noch +1 rechnen kann :D )

...zur Frage

Was möchtest Du wissen?