• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

MySqli - Datenbanktabelle anlegen

DeletedUser86497

Gast
Seit wann is ein leerer String NULL? Wenn ich mich nicht täusche, muss man, wenn an NULL einfügen will, das auch explizit schreiben. (insert into ichbineinetabelle (bla,bli) values (NULL,"blub"))

seh ich genauso


Man sollte die Abfragen erstmal normal lernen, bevor man schon Perpared Statesments benutzt. Dadurch sieht man auch gleich, was selbige für Vorteile bringen.

DaHaiz ich muss dich leider enttäuschen die Variante funktioniert ;-)
Prepared Statements sind soweit ich weis sicher gegen SQL-Injektion hab ich recht?
 

DeletedUser

Gast
DaHaiz ich muss dich leider enttäuschen die Variante funktioniert ;-)
Prepared Statements sind soweit ich weis sicher gegen SQL-Injektion hab ich recht?

Oh, ich hab wohl eure beiden Beiträge etwas vermischt. Du hast die beiden Anführungsstriche geschrieben. -.- Dass seins funktioniert, hätt ich auch gewusst ;-)
 

DeletedUser86497

Gast
Also wenn ich mirs so recht überlege sollte ich mir doch noch für die Abfrage helfen lassen :)
Übrigens: PHPMyAdmin funzt ;)

ich poste dann mal gleich den Code aus der Abfrage
 

DeletedUser86497

Gast
Der funzt sogar :mrgreen:
Nur die ausgabe sieht komisch aus aber daran solls ja nicht scheitern ;-)
<?php
@$db = new mysqli('localhost', 'root', 'root', 'testbank');

if(mysqli_connect_errno())
{
printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
exit();
}

if($resultat = $db->query('SELECT * FROM stadt ORDER by id'))
{
while($daten = $resultat->fetch_object())
{
echo "ID: .". $daten->id;
echo "Name der Stadt: " . $daten->name;
}
$resultat->close();
}else{
echo "Es konnten keine Daten aus der Datenbank ausgelesen werden";
}
$db->close;

?>
 

DeletedUser

Gast
Seit wann is ein leerer String NULL? Wenn ich mich nicht täusche, muss man, wenn an NULL einfügen will, das auch explizit schreiben. (insert into ichbineinetabelle (bla,bli) values (NULL,"blub"))

Hm, hast schon Recht das '' nicht das gleiche ist wie NULL. Nur ist '' für mich als Menschen genauso ein 'leerer' Wert wie NULL ;-)

Man sollte die Abfragen erstmal normal lernen, bevor man schon Perpared Statesments benutzt. Dadurch sieht man auch gleich, was selbige für Vorteile bringen.

Stimmt auch wieder :eek:
Nur versteh ich den Aufbau des Buches nicht ganz. Man könnte sich die ganze Objektorientierte Geschichte sparen und stinknormales MySQL verwenden, das wäre für den Anfang wohl etwas verständlicher ... :|


Code:
if(mysqli_connect_errno())

Wie gesagt, nimm doch $db->connect_errno, dann ist es einheitlich objektorientiert ;-)


Code:
if($resultat = $db->query('SELECT * FROM stadt ORDER by id'))

Alle SQL-Schlüsselwörter solltest du einheitlich in Großbuchstaben schreiben, damit du nicht den Überblick verlierst. Das by gehört auch dazu (ORDER BY)


Noch ein allgemeiner Tipp: Rücke deinen Code ein, sonst hast du nach ein paar Zeilen mehr Code ein Monster, das nur noch schwer zu bändigen ist :eek:
 

DeletedUser86497

Gast
Code:
if(mysqli_connect_errno())

Wie gesagt, nimm doch $db->connect_errno, dann ist es einheitlich objektorientiert ;-)
Versteht Apache Webserver nicht :mrgreen:


Code:
if($resultat = $db->query('SELECT * FROM stadt ORDER by id'))

Alle SQL-Schlüsselwörter solltest du einheitlich in Großbuchstaben schreiben, damit du nicht den Überblick verlierst. Das by gehört auch dazu (ORDER BY)
Hat mich auch schon gewundert :)

Noch ein allgemeiner Tipp: Rücke deinen Code ein, sonst hast du nach ein paar Zeilen mehr Code ein Monster, das nur noch schwer zu bändigen ist :eek:

Ich weis ich weis^^ Die Form ist auch wichtig :cool: aber musste das mal schnell tippen und soweit ich weis geht einrücken im Forum gar nicht kann mich aber auch täuschen
 

DeletedUser86497

Gast
Wie kann ich jetzt nur einen einzelnen Datensatz erstellen?:|
 

DeletedUser

Gast
Versteht Apache Webserver nicht :mrgreen:

glaub ich dir nicht. o_O

Ich weis ich weis^^ Die Form ist auch wichtig :cool: aber musste das mal schnell tippen und soweit ich weis geht einrücken im Forum gar nicht kann mich aber auch täuschen

wenn du es eingerückt kopierst, kann das Forum das auch. Das Forum nimmt nur den Tabulator nicht automatisch als 4/8 Leerzeichen, sodass Einrücken direkt im Forum eher unangenehm ist. ;-)
 

DeletedUser86497

Gast
Vorerst letzte Frage: Wie kann man einen einzelnen Wert auslesen?
 

DeletedUser86497

Gast
Ja sowas meinte ich nur das Drumherum hätte ich auch gerne :mrgreen:
 

DeletedUser

Gast
??
habe ich das jetzt falsch verstanden, oder meinst du sowas:
Code:
"SELECT name FROM users WHERE id = ?"

Er muss aber trotzdem über fetch_array/assoc/object gehen. Und das meinte der Threadersteller, oder? Du kannst natürlich bestimmte Spalten auswählen, aber du hast trotzdem Ergebnis"zeilen".
 

DeletedUser

Gast
ich weis jetz nicht was da mysqli zu bieten hat, aber z.B. mit Zend_db bekommt man sowas hin (fetchPairs() -> eindimensionales Array mit einem Wert) ;)
ist ja auch egal...

@pi:
könntest du nochmal etwas präziser erläutern, was du jetzt genau brauchst, bzw. wo es hängt?
 

DeletedUser86497

Gast
Er muss aber trotzdem über fetch_array/assoc/object gehen. Und das meinte der Threadersteller, oder? Du kannst natürlich bestimmte Spalten auswählen, aber du hast trotzdem Ergebnis"zeilen".
genau, den teil mit fetch dingens versteh ich nicht :mrgreen:
 

DeletedUser86497

Gast
es steht da wie man beide datensätze gleichzeitig ausliest, aber nicht wie man einen einzelnen ausließt :mrgreen:
 

DeletedUser86497

Gast
Sagte ich doch das ich mich damit nicht auskenne :mrgreen:
Hab ja probiert es umzubauen aber funzt net danke für den link jedenfalls :cool:
 

DeletedUser86497

Gast
Habe jetzt versucht den Anfang einer Passwortanfrage zu basteln. :)
Im Moment werden einfach die User und Passwörter getrennt durch ein "|" ausgegeben. Wie bau ich das ganze jetzt so um, dass ich einen User bekomme und Passwort und Username in einer Variable bzw einem Array?

<?php
@$db = new mysqli('localhost', 'root', 'root', 'diestaemme');

if($db->connect_errno)
{
printf("Verbindung fehlgeschlagen: %s\n", $db->connect_error);
exit();
}

$sql = 'SELECT * FROM `users`';
$ergebnis = $db->query($sql);

while ($zeile = $ergebnis->fetch_object())
{
echo $zeile->name."|".$zeile->pass."<br>";
}


$ergebnis->close;
$db->close;

?>

Als Datenbankname hab ich mal zum Spaß "diestaemme" genommen. :mrgreen:
 

DeletedUser

Gast
[...] Passwort und Username in [...] einem Array?

Is wohl sinnvoller ;-)

Code:
<?php
@$db = new mysqli('localhost', 'root', 'root', 'diestaemme');

if($db->connect_errno)
{
    printf("Verbindung fehlgeschlagen: %s\n", $db->connect_error);
    exit();
}
	
$sql = 'SELECT * FROM users';
$ergebnis = $db->query($sql);

// Ausgabe-Array anlegen
$output = array();

while ($zeile = $ergebnis->fetch_object())
{
    // Werte zuweisen
    $output[] = array(
                        'user'    => $zeile->user,
                        'pass'    => $zeile->pass
                     );
}

$ergebnis->close;
$db->close;

// Ergebnis ausgeben
foreach ($output as $row)
{
    // Wie du willst ...
}

?>


Btw: Du solltest dich als Programmiersprache auf Englisch festlegen. Die meisten finden es störend, wnen zwischen zwei Sprachen hin und her gewechselt wird.
Außerdem hab ich mal Einrückungen und Kommentare eingefügt ;-)
 

DeletedUser86497

Gast
Wie machst du diese Einrückungen ich hab mir extra nen Texteditor mit Syntax Highlighting und Einrückung genommen und das auch eingerückt nur funzt es nicht...:(

EDIT: Übrigens: Die foreach-Schleife ist mir ein unerklärliches Ding, das muss ich mir nochmal anschauen :mrgreen:
 

DeletedUser

Gast
Wie machst du diese Einrückungen ich hab mir extra nen Texteditor mit Syntax Highlighting und Einrückung genommen und das auch eingerückt nur funzt es nicht...:(

Du packst deinen Code nur in Spoiler, du musst ihn aber hier im Forum zwischen die Code-Tags (die Raute) stellen ;-)
Für PHP-Code gibts aber extra Tags (sind gleich daneben) :)

Btw: close() ist eine Methode, keine Eigenschaft. Es muss also beispielweise $db->close(); heißen ;-)
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser86497

Gast
Hab das jetzt mal in eine Passwortabfrage umgebaut, nur bekomme ich einen Parse Error in Zeile 22 gemeldet:
PHP:
<?php
@$db = new mysqli('localhost', 'root', 'root', 'diestaemme');

if($db->connect_errno)
{
    printf("Verbindung fehlgeschlagen: %s\n", $db->connect_error);
    exit();
}

$user = $_GET['user'];
	
$sql = 'SELECT * FROM users WHERE "$user";
$ergebnis = $db->query($sql);

// Ausgabe-Array anlegen
$output = array();

while ($zeile = $ergebnis->fetch_object())
{
	 // Werte zuweisen
    $output[] = array(
                        'user'    => $zeile->user,
                        'pass'    => $zeile->pass
                     );
}

$ergebnis->close();
$db->close();

    
$pass = $_GET['pass'];

// Ergebnis ausgeben
foreach ($output as $row)
	{
		if ($pass == $row['pass'])
			{
				
				//Blablabla
			}else{
				//Blablabla
				
			}
		
	}


?>
 
Oben