mysql query INSERT INTO, und LEGEN Probleme
Ich habe meinen Kopf kratzen für eine gute Stunde oder so jetzt, aber ich kann nicht herausfinden, was ich falsch gemacht habe hier. Ich hoffe jemand kann mich in die richtige Richtung.
Ich versuche, fügen Sie einige Daten in eine SQL-Datenbank mit der INSERT INTO-Methode, aber es funktioniert einfach nicht zu funktionieren scheint. Ich enthalten viele echos zu sehen versuchen und sehen, wo genau der Fehler sein könnte. Von diesem weiß ich, dass der code OK ist, bis der INSERT INTO-Teil genannt wird. Auch die überprüfung der Datenbank-online-revelas, dass keine Informationen Hinzugefügt... Der online-Datenbank hat 3 Tabellen, 'Lärm', 'wave' und 'Puls'. Auch alle Felder vorhanden sind, so kann ich wirklich nicht verstehen, warum dieser code nicht.
<?php
//Connect To Database
$hostname='myhostname';
$username='myusername';
$password='mypassword';
$dbname='dbname';
mysql_connect($hostname,$username, $password) OR DIE ('Unable to connect to database! Please try again later.');
mysql_select_db($dbname);
//test to see what kind of instrument is being uploaded.
$type=strip_tags($_GET['TYPE']);
if($type == 'noise') {
$audio=strip_tags($_GET['AUDIO']);
echo $audio;
$automate=strip_tags($_GET['AUTOMATE']);
echo $automate;
$by=strip_tags($_GET['BY']);
echo $by;
$envelope=strip_tags($_GET['ENVELOPE']);
echo $envelope;
$length=strip_tags($_GET['LENGTH']);
echo $length;
$name=strip_tags($_GET['NAME']);
echo $name;
$notes=strip_tags($_GET['NOTES']);
echo $notes;
$output=strip_tags($_GET['OUTPUT']);
echo $output;
$patchname=strip_tags($_GET['PATCH_NAME']);
echo $patchname;
$s_cmd=strip_tags($_GET['S_CMD']);
echo $s_cmd;
$shape=strip_tags($_GET['SHAPE']);
echo $shape;
$table=strip_tags($_GET['TABLE']);
echo $table;
$table0=strip_tags($_GET['table0']);
echo $table0;
$table1=strip_tags($_GET['table1']);
echo $table1;
$table2=strip_tags($_GET['table2']);
echo $table2;
$table3=strip_tags($_GET['table3']);
echo $table3;
$table4=strip_tags($_GET['table4']);
echo $table4;
$table5=strip_tags($_GET['table5']);
echo $table5;
$table6=strip_tags($_GET['table6']);
echo $table6;
$table7=strip_tags($_GET['table7']);
echo $table7;
$table8=strip_tags($_GET['table8']);
echo $table8;
$table9=strip_tags($_GET['table9']);
echo $table9;
$tableA=strip_tags($_GET['tableA']);
echo $tableA;
$tableB=strip_tags($_GET['tableB']);
echo $tableB;
$tableC=strip_tags($_GET['tableC']);
echo $tableC;
$tableD=strip_tags($_GET['tableD']);
echo $tableD;
$tableE=strip_tags($_GET['tableE']);
echo $tableE;
$tableF=strip_tags($_GET['tableF']);
echo $tableF;
//input this info into the SQL noise instrument table
$request = mysql_query("INSERT INTO `noise` SET
AUDIO = '$audio',
AUTOMATE = '$automate',
BY = '$by',
ENVELOPE = '$envelope',
LENGTH = '$length',
NAME ='$name',
NOTES = '$notes',
OUTPUT = '$output',
PATCH_NAME = '$patchname',
S_CMD = '$s_cmd',
SHAPE = '$shape',
TABLE = '$table',
table0 = '$table0',
table1 = '$table1',
table2 = '$table2',
table3 = '$table3',
table4 = '$table4',
table5 = '$table5',
table6 = '$table6',
table7 = '$table7',
table8 = '$table8',
table9 = '$table9',
tableA = '$tableA',
tableB = '$tableB',
tableC = '$tableC',
tableD = '$tableD',
tableE = '$tableE',
tableF = '$tableF',
TYPE = '$type';" );
if($request) {
echo "Your patch has been successfully uploaded.";
echo "Thanks for contributing!";
}
else {
echo "there has been a problem";
}
}
?>
Wenn ich laden Sie diese URL von meine iPhone-app:
NSString *website = [NSString stringWithFormat:@"http://mywebsite/problem.php?AUDIO=%@&AUTOMATE=%@&BY=%@&ENVELOPE=%@&LENGTH=%@&NAME=%@&NOTES=%@&OUTPUT=%@&PATCH_NAME=%@&S_CMD=%@&SHAPE=%@&TABLE=%@&table0=%@&table1=%@&table2=%@&table3=%@&table4=%@&table5=%@&table6=%@&table7=%@&table8=%@&table9=%@&tableA=%@&tableB=%@&tableC=%@&tableD=%@&tableE=%@&tableF=%@&TYPE=%@", audio, automate, by, envelope, length, name, notes, output, patch_name, s_cmd, shape, table, table0, table1, table2, table3, table4, table5, table6, table7, table8, table9, tableA, tableB, tableC, tableD, tableE, tableF, type];
[BackgroundLoader loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:website]]];
Die Ausgabe die ich bekomme, ist:
AUDIOAUTOMATEBYENVELOPELENGTHNAMENOTESOUTPUTPATCH_NAMES_CMDSHAPETABLETABLE0...TABLEFthere has been a problem
Kann jemand sehen, warum dieser code nicht, die Tabelle zu aktualisieren?
Vielen Dank im Voraus.
- Also dein problem liegt mit diesen:
$...=strip_tags($_GET['...']);
.. hmmmm - Nur verwenden mit UPDATE.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, Sie haben Felder, die den Namen
BY
,TABLE
,TYPE
sind reservierte Wörter. Verwenden backquotes für diese:INSERT INTO
eine Tabelle mitVALUES
syntax. DieINSERT ... SET
syntax ist nur für MySQL, so ist es besser, der andere nur für den Fall Sie jemals brauchen werden, zu ändern, RDBMS (weniger änderungen im code werden benötigt).können Sie die insert-Satz format für die mysql-Abfragen
das problem kann gefunden werden, indem diese nach Ihrer Anfrage
geben Sie eine Fehlermeldung
Vermutung würde ich sagen, dass das Semikolon am Ende der Abfrage wird ein problem verursachen, dies ist nicht erforderlich, wenn der Aufruf über php
außerdem sollte man backticks um den Spaltennamen. Sie werden wahrscheinlich feststellen, der TYP ist ein reserviertes Wort, so dass bei einem minimum, setzen backticks um
TYPE
auch dein script ist offen für sql-injection. versuchen Sie es mit $Wert = mysql_real_escape_string($_GET['Wert']) zu stoppen, dass aus geschieht
Einfügen ist nicht mit dem SET sollte Folgendes tun
EDIT:
Wenn Sie brauchen, um geben Sie die Feldnamen verwenden Sie die folgenden:
Habe ich noch nie gesehen
INSERT
...SET
verwendet. Sie könnten versuchen, die üblichenINSERT
..VALUES
syntax wie folgt:Als bumperbox schon sagt - es ' s wahrscheinlich scheitern, weil du bist mit einem Stichwort als einen der Feldnamen. Umschließen Sie den Feldnamen mit backticks (`) zu vermeiden, Ihnen wird interpretiert als Schlüsselwörter von MySQL. z.B.:
Das problem ist, mischen Sie zahlen mit strings und die strings müssen in Anführungszeichen eingeschlossen werden. Ich hatte eine Menge ärger mit diesem und wieder eingeschaltet, um mit Werte-syntax.
Schlage ich vor, Notwasserung alle, und die Verwendung von vorbereiteten Anweisungen in Kombination mit PDO. Dein code, so wie es da steht, ist anfällig für eine SQL-injection-Angriff.