Php Datenbank augeben

skipper114b

Grünschnabel
Hey leute,
Ich muss für die Schule ein Abschlussprojekt machen und könnte etwas Hilfe gebrauchen, da ich noch kein erfahrener Programmierer bin.
Bisher habe ich mich nur mit Html richtig auseinander gesetzt.
Da ich jetzt aber für meine Website eine Datenbank brauche, musste ich auf php umsteigen.
Jetzt wollte ich fragen, wie ich eine Datenbank nach spezifischer suche eines namens in der Tabelle ausgeben kann?

ich habe mir da schon folgendes überlegt und heraus gesucht, aber ich erhalte immer folgendes problem...

"

Notice: Undefined variable: such in /users/*/www/rezsuchen.php on line 11

Notice: Undefined variable: mysqli in /users/*/www/rezsuchen.php on line 12

Notice: Trying to get property of non-object in /users/*/www/rezsuchen.php on line 12
Error:
Catchable fatal error: Object of class mysqli_result could not be converted to string in /users/joshuademarco/www/rezsuchen.php on line 15

Hier mein Html code...
HTML:
<form action="rezsuchen.php" method=post>
Name <br>
<input type=text name="$such" size= 30>
<br>
<br>
<input type=submit name="SUBMIT" value="suchen">
<br>
</form>

und hier die rezsuche.php...
PHP:
<?php

//Verbindung
$verbindung = mysqli_connect("localhost","Benutzername","Passwort", "Datenbank") or die ("Keine Verbindung!");

error_reporting(E_ALL);
ini_set("display_errors", 1); 


//Definition der Auswahl
$sql = mysqli_query($verbindung, "SELECT * FROM Rezepte WHERE Name = '".$such."'");
        printf("Error: %s\n", $mysqli->error);


echo ($sql);
while ($row = mysqli_fetch_assoc($result))
{
echo 'ID    : '.$row['ID'].'<br>';
echo 'Name : '.$row['Name'].'<br>';
echo 'Besitzer    : '.$row['Besitzer'].'<br>';
echo 'Anleitung    : '.$row['Anleitung'].'<br>';
echo 'Erstelldatum    : '.$row['Erstelldatum'].'<br>';
}

echo $such;

//Ende der Verbindung
mysqli_close($verbindung);
?>

kann mir da jemand helfen? :)
 
Hi

zum letzten Fehler zuerst:
Code:
$sql = mysqli_query($verbindung, "SELECT * FROM Rezepte WHERE Name = '".$such."'");
...
echo ($sql);
Das, was mysqli_query zurückgibt, kann einfach nicht direkt ausgegeben werden. Zum Rausholen der Werte gibt es die fetch-Funktionen, die du ja etwas weiter unten verwendest.

Code:
 $verbindung = mysqli_connect("localhost","Benutzername","Passwort", "Datenbank") or die ("Keine Verbindung!");
...
printf("Error: %s\n", $mysqli->error);
Wie die Meldung sagt, es gibt keine Variable mysqli.
Code:
 $verbindung = mysqli_connect("localhost","Benutzername","Passwort", "Datenbank") or die ("Keine Verbindung!");
...
printf("Error: %s\n", $verbindung ->error);

Und
Code:
<input type=text name="$such" size= 30>
...
$sql = mysqli_query($verbindung, "SELECT * FROM Rezepte WHERE Name = '".$such."'")
hat gleich 4 Probleme:
a) Im HTML-Teil gehört das Dollar-Zeichen weg, einfach nur name="such"
b) In PHP ist das dann nicht direkt $such, sondern $_POST['such'] (weil Method="post" im Formular; es gibt auch noch GET).
c) Man kann sich nicht darauf verlassen, dass man überhaupt ein $_POST['such'] bekommt (Benutzer können sehr unerwartete Sachen machen...). Vor Verwendung mit
Code:
if(!isset($_POST['such'])) { /*Fehler, Ende*/ }
prüfen
d) Benutzerwerte so direkt in den SQL-String einfügen ist eins der bekanntesten Sicherheitsprobleme; mit den richtigen Eingaben kann man eine Menge Unsinn mit der DB machen. Siehe Prepared Statements.
 
Zuletzt bearbeitet:
@sheel: Vielen Dank für deine Ausführliche Erklärung und deine Hilfe:)

Ich bin deinen Anweisungen gefolgt un erhalte jetzt leider den Fehler
"Catchable fatal error: Object of class mysqli_result could not be converted to string in /users/*/www/rezsuchen.php on line 16"

Line 16 -->
PHP:
echo ($sql);

Und wie soll ich denn das lösen wenn ich die Benutzer werte nicht direkt in den SQL-String einfüge ?
 
Zurück