Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung der Probleme mit der automatischen Überprüfung, dem automatischen Hinzufügen und Formularfehlern von thinkPHP

Ausführliche Erläuterung der Probleme mit der automatischen Überprüfung, dem automatischen Hinzufügen und Formularfehlern von thinkPHP

墨辰丷
墨辰丷Original
2018-05-31 16:20:541251Durchsuche

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:

Grundfunktionen von PHP

PHP-Datentypen

PHP ermittelt, ob eine Datei im angegebenen Verzeichnis vorhanden ist

PHP-Prozesssignalverarbeitung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn