In diesem Artikel wird hauptsächlich die Analyse der automatischen Überprüfung, der automatischen Hinzufügung und der Formularfehlerprobleme vorgestellt und die damit verbundenen Verwendungsfähigkeiten und Vorsichtsmaßnahmen des automatischen Vervollständigungsmechanismus von thinkPHP in Form von Fällen analysiert
Ich habe kürzlich an einem anderen Projekt gearbeitet und wollte thinkphp verwenden, um eine Bestätigung zu schreiben, aber ich habe ein paar Tage lang geweint. Am Anfang war es ein Token-Fehler, und dann wurde etwas, das automatisch hinzugefügt wurde, ungültig.
Ich habe getestet und gesucht und festgestellt, dass die Methode create() ursprünglich zwei Parameter hat
Der erste Parameter ist der Datenparameter, den jeder kennt, und der zweite Parameter Es handelt sich um den versteckten $type-Parameter. Was wird mit diesem Parameter gesteuert? ?
Code kopieren Der Code lautet wie folgt:
//$type = $type?$type!empty($data[$this-> getPk() ])?self::MODEL_UPDATE:self::MODEL_INSERT);
Nachdem ich diesen Satz sorgfältig überlegt hatte, stellte ich fest, dass dieser versteckte Parameter verwendet wird, um den spezifischen Betrieb dieser Datenbank anzugeben?
Der Wert von $type ist 1 für den Einfügevorgang und 0 für den Aktualisierungsvorgang. Standardmäßig muss diesem Parameter kein Wert zugewiesen werden, da das System ihn automatisch identifizieren kann.
Wenn Ihr Primärschlüssel automatisch von der Datenbank hinzugefügt wird, ist alles in Ordnung. Wenn Sie es manuell hinzufügen würden, wäre das eine Tragödie. Denn standardmäßig wird der Datenaktualisierungsvorgang durchgeführt.
Das Folgende ist der Autovervollständigungscode, den ich geschrieben habe
protected $_auto = array( array('password','sha1',1,'function'), array('date', 'time', 1, 'function'), );
Haben Sie die 1 gesehen? Diese 1 bedeutet, wenn Daten eingefügt werden, Just die Funktion ausführen. PS: Das ist es, was mich schon lange beunruhigt.
Wenn Sie Daten eingeben möchten, können Sie so schreiben:
create($_POST,1)//【插入数据】 create($_POST,2)//【更新数据】
Teilen Sie der Erstellungsmethode direkt mit, dass es sich bei diesem Vorgang um einen Einfügevorgang handelt , was das Problem lösen kann. Das Timing der automatischen Vervollständigung ist falsch und die automatische Vervollständigung ist ungültig.
Aber wenn Sie darauf bestehen, es nicht so zu schreiben, kann ich nicht anders. Denken Sie nur daran, dass bei Verwendung der Funktion create() standardmäßig die Aktualisierung der Daten erfolgt. Beim Schreiben der Model-Methode.
Thinkphp-Autovervollständigungsdiagramm
Haben Sie es gesehen?
protected $_auto = array( array('password','sha1',2,'function'), array('date', 'time', 2, 'function'), //把1换成2就好了。 );
Die Frage ist Es kann gelöst werden.
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
PHP ermittelt, ob eine Datei im angegebenen Verzeichnis vorhanden ist
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Probleme mit der automatischen Überprüfung, dem automatischen Hinzufügen und Formularfehlern von thinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!