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 Validierung if(strlen($answers) !=10).

InformationsquelleAutor Fox | 2012-10-30
Schreibe einen Kommentar