mysql_query(INSERT...) - Funktion funktioniert nicht in meinem code
Ich habe die Datenbank erstellen, die im Grunde akzeptieren, name und Id und Antwort-string des
Länge 47,und meine php-code wird Grad die eingehenden Ergebnisse mit den Antworten, die ich zur Verfügung gestellt, und Anzahl mit der Anzahl der richtigen Antworten wird in der Datenbank gespeichert. dies ist eine information meiner Datenbank.
Datenbank-name kennzeichnet
und die Tabelle mit dem Namen 'Antwort', die hat 5 Felder, die als Folge von
1) answer_id :int , not null, auto increament.
2) name: text
3)id : text
4)answers : text
5)correct : int
meine Frage und problem ist, die Funktion arbeitet
//setup query
$q = mysql_query("INSERT INTO `answer` VALUES
(NULL,'$name', '$id','$answers','$correct')");
//run query
$result = mysql_query($q);
oder in einer anderen Weise , nichts speichern in meiner Datenbank ???
Vielen Dank im Voraus.
dies ist das ganze Programm.
<?php
error_reporting(E_ALL ^ E_STRICT);
//to turn error reporting off
error_reporting(0);
$name =$_POST['name'];
$id = $_POST['id'];
$answers = $_POST['answers'];
//check the length of string
if(strlen($answers) !=10)
{
print'your answer string must be 10';
return;
}
mysql_connect("localhost","root","");
mysql_select_db("marking");
$name = addslashes($name);
$id = addslashes($id);
$answers = addslashes($answers);
$answer_key = "abcfdbbjca";
$correct = 0;
for($i=0;$i<strlen($answer_key);$i++)
{
if($answer_key[$i] == $answers[$i])
$correct++;
}
// Setup query
$q = mysql_query("INSERT INTO `answer` VALUES ('$name', '$id','$answers','$correct')");
$result = mysql_query($q);
print 'Thnak you. You got' + $correct + 'of 10 answers correct';
?>
- es sieht aus wie Sie versuchen, zu speichern einen NULL-Wert in Ihrem answer_id, die nicht null sein.
- Welche Fehler haben Sie?
- Es gibt zahlreiche Gründe, warum dies scheitern kann. Zuerst müssen Sie Debuggen.
if (!$result) {echo mysql_error();}
um zu überprüfen, Fehler in der syntax. Wenn Sie Ihre Eingabe-Werte nicht ordnungsgemäß geschützt, Zitate brechen kann es auch. - Sie können, müssen weitere Informationen für jedermann zu wissen. Aber für den Anfang, die Sie anrufen mysql_query zweimal dort. Einmal auf ein Ergebnis. Wir müssten wissen, die Werte für diese Variable, wenn Sie verbunden sind, jeder mysql_error Ergebnisse, etc. Auch wird jemand anschreien, Sie für die Verwendung mysql_functions stattdessen mysqli oder pdo
- Das ist OK. Es ist ein auto-Inkrement-Feld, das zuweisen von NULL bedeutet, dass es seine automatische Inkrement-Wert.
- Hmm, ich in der Regel nur lassen Sie es aus insgesamt. Nie versucht es auf diese Weise.
- Es gibt keine separate "setup-Abfrage" und "ausführen Abfrage" Schritte bei der Verwendung des mysql_XXX Funktionen.
- Aber das erfordert, dass man eine Liste der Spaltennamen in der INSERT-Anweisung. Wenn Sie lassen Sie die Spalte-Namen, geben Sie die Werte für alle Spalten, und muss den Wert NULL angeben, die für die autoincrement.
- nathanhayfield: beide sind korrekt: dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
- $q = "INSERT... genug ist, wenn Sie wollen, richten Sie Ihre query-string vor der Ausführung, wie DC_ gehört es in seiner Antwort
- Ich bekam keine Fehler, alles funktioniert einwandfrei, aber wenn ich meine Datenbank ist nichts da... und ich habe versucht mysql_query("insert into Antworten values('$name','$id','$Antwort',$richtig)"); immer noch dasselbe Ergebnis nichts Hinzugefügt zu meiner Datenbank.
- haben Sie nicht versucht, führen Sie die vollständige analysiert die Abfrage direkt auf die Datenbank (ersetzen Sie $.. von den realen Werten)
- Ich habe meine ganze Programm könnte bitte jemand überprüfen, was das problem ist und zeigte mir, wo und was ich Bearbeiten müssen, damit es funktioniert.
- Könnte Sie post ein paar Beispiele, was
$answers
halten konnte? Gute und schlechte Werte. Was mich stört, ist die Validierungif(strlen($answers) !=10)
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Außerdem sollten Sie vermeiden, mit
mysql_
Funktionen, wie Sie in den Prozess der abgelehnt wurde. Stattdessen empfehle ich Ihnen, machen Sie sich mit PDO.Bitte beachten Sie auch, die
or die(mysql_error())
Anteil sollte nicht verwendet werden in der Produktion code, nur für debugging-Zwecke.echo $q
in das Skript um sicherzustellen, dass es korrekt ist.Zwei Dinge.
Sind Sie tatsächlich die Ausführung der Abfrage doppelt.
mysql_query
führt die Abfrage aus und liefert das Ergebnis-Ressource. http://php.net/manual/en/function.mysql-query.phpUnd auch Sie sind unter Angabe der
int
Spaltecorrect
in Ihre Abfrage, soweit ich weiß, kann man nicht tun (ich könnte falsch sein, dort).EDIT: Stellt sich heraus, ich bin eigentlich falsch ist, können Sie ignorieren meine Antwort.