• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

MySQL Query funktioniert nicht

Lightstorm

New member
Mein Query Befehl funktioniert irgendwie nicht, ich weiß nicht wo das Problem ist, es erscheint keine Fehlermeldung, es wird einfach nichts in die Datenbank eingetragen, sonst ging es immer, als ich mit so vielen Zahlen gemacht habe plötzlich nicht mehr.


Code:
	$query	=	"INSERT INTO fragen (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, geschlecht, alter, name ) ".
				"VALUES( ".
				"'$_1',".
				"'$_2',".
				"'$_3',".
				"'$_4',".
				"'$_5',".
				"'$_6',".
				"'$_7',".
				"'$_8',".
				"'$_9',".
				"'$_10',".
				"'$_11',".
				"'$_12',".
				"'$_13',".
				"'$_14',".
				"'$_15',".
				"'$_16',".
				"'$_17',".
				"'$_18',".
				"'$_19',".
				"'$_20',".
				"'$_21',".
				"'$_22',".
				"'$_23',".
				"'$_24',".
				"'$_25',".
				"'$_26',".
				"'$_27',".
				"'$_28',".
				"'$_29',".
				"'$_30',".
				"'$_31',".
				"'$_32',".
				"'$_33',".
				"'$_34',".
				"'$_35',".
				"'$_36',".
				"'$_37',".
				"'$_38',".
				"'$_39',".
				"'$_40',".
				"'$_41',".
				"'$_42',".
				"'$_43',".
				"'$_44',".
				"'$_45',".
				"'$_46',".
				"'$_47',".
				"'$_48',".
				"'$_49',".
				"'$_50',".
				"'$_51',".
				"'$_52',".
				"'$_53',".
				"'$_54',".
				"'$_55',".
				"'$_56',".
				"'$_57',".
				"'$geschlecht',".
				"'$alter',".
				"'$name')";
				
				
				
	$result	=	mysql_query( $query );
 
Naja - die erzeugen des Query-Strings ist ja ziemlich suboptimal:
1. SQL-Injektions nicht verhindert.
2. Unübersichtlich
3. Redundant

Aber zu deinem Problem: MySQL-Fehlermeldungen muss man explizit ausgeben:
PHP-Manual schrieb:
// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
 
Ich komm immer noch nicht dahinter:


Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2' at line 1 Whole query: INSERT INTO fragen (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, geschlecht, alter, name ) VALUES ( '0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','m','0','wow')
 
Ok, ich habs jetzt denk ich hinbekommen.

Aber komisch, seit wann ist sind die `` notwendig? Sonst ging es immer ohne.
 
Zuletzt bearbeitet:
Code:
$query = "INSERT INTO `fragen` (";
$values = "";
for ($i = 1; $i <= 57; $i++){
	$query .= "`" . $i . "`, ";
	$values .= "'" . ${'_' . $i} . "', ";
}
$query .= "`geschlecht`, `alter`, `name`) VALUES(" . $values . "'$geschlecht', '$alter', '$name')";

PS: SQL-Injections sind immer nonch möglich.
 
Ok, ich habs jetzt denk ich hinbekommen.

Aber komisch, seit wann ist sind die `` notwendig? Sonst ging es immer ohne.
Nur weil Deine Datembank nicht gemeckert hat, als Du die durchnummerierten Spalten angelegt hast, heißt das nicht, dass Du dabei nicht auf Probleme stoßen wirst. In PHP hast Du Dir ja auch schon einen entsprechenden Workaround ausdenken müssen.

Die Benennung nach Reihenfolge, statt nach Aufgabe / Inhalt ist sowieso suboptimal (was, wenn noch ein Feld dazukommt, weichst Du dann auf Kommazahlen aus?), von Normalformlehre fang ich erst gar nicht an.
 
Reicht das nicht?
ja.:

PHP:
$q = "SELECT * WHERE FROM `name`='".$name."'";
=> z.B.
SELECT * WHERE FROM `name`='Max Mustermann'

Wenn nun $name ' OR '1'='1 ist wird aus dem String

PHP:
SELECT * WHERE FROM `name`='' OR '1'='1'

Beim Löschen wird es dann fatal.
 
mysqli und prepared statements verwenden!

siehe: http://de3.php.net/manual/en/mysqli.overview.php

Schließe mich dem an. Bei mysqli hast du mysql_real_escape_string(); schon drin (= http://de2.php.net/manual/en/function.mysql-real-escape-string.php).

Ein Beispiel:

PHP:
$mysqli = new mysqli('localhost', 'root', 'passwort', 'datenbank');

$result = $mysqli->query("SELECT * FROM produkt WHERE Gruppe = 'Test'");

while($obj = $result->fetch_object()){ 
			echo $obj->Gruppe;
}

Die Zugangsdaten solltest du aber z.B. per include_once(); in eine andere Datei verlegen, damit du mit anderen Skripten darauf zugreifen kannst. Auch ist dein Datenbankdesign mit absoluter Sicherheit *******. Ich kann mir schon vorstellen, wie du mit Schweißperlen auf der Stirn vor dem Monitor sitzt. Versuche die verschiedenen zusammengehörenden Spalten in mehrere Tabellen auszulagern. Und google nach »MySQL Datenbankdesign«. Wenn du Ordnung und Übersicht hältst, bist du drastisch schneller und musst dich weniger quälen
 
Zuletzt bearbeitet:
Zurück
Oben