Neuling, der heute das Yii-Framework 1.1 verwendet, ist beim Üben des CRUD-Aktualisierungsvorgangs von Datenbank-DAO auf ein Problem gestoßen:
bedeutet, dass ich den Datensatz mit dem Namenswert lishenglong in der Datenbanktabelle auf „smart“ aktualisieren möchte. Der Datenbanktabellendatensatz lautet wie folgt:
Das heißt, bei der Stapelaktualisierung werden die folgenden 4 Datensatzzeilen aktualisiert, dies ist jedoch nicht der Fall.
Das Ausführungsergebnis ist, dass nur die erste Zeile aktualisiert wird ? ?
Ich habe das Protokoll aktiviert, um die ausgeführte SQL-Anweisung anzuzeigen:
Ich habe den Grund gefunden. Beim Binden von Parametern wurde meine Aktualisierungsbedingung name='lishenglong' überschrieben, aber beim Parsen wurde sie zu name='smart', name='smart' Eigentlich möchte ich den neuen Wert aktualisieren, nicht die Aktualisierungsbedingung. Bitte fragen Sie auch die Tante, die durch die Grube gegangen ist, mir den Grund zu nennen und mir die Lösung zu geben. Ich bin sehr dankbar ~
Neuling, der heute das Yii-Framework 1.1 verwendet, ist beim Üben des CRUD-Aktualisierungsvorgangs von Datenbank-DAO auf ein Problem gestoßen:
bedeutet, dass ich den Datensatz mit dem Namenswert lishenglong in der Datenbanktabelle auf „smart“ aktualisieren möchte. Der Datenbanktabellendatensatz lautet wie folgt:
Das heißt, bei der Stapelaktualisierung werden die folgenden 4 Datensatzzeilen aktualisiert, dies ist jedoch nicht der Fall.
Das Ausführungsergebnis ist, dass nur die erste Zeile aktualisiert wird ? ?
Ich habe das Protokoll aktiviert, um die ausgeführte SQL-Anweisung anzuzeigen:
Ich habe den Grund gefunden. Beim Binden von Parametern wurde meine Aktualisierungsbedingung name='lishenglong' überschrieben, aber beim Parsen wurde sie zu name='smart', name='smart' Eigentlich möchte ich den neuen Wert aktualisieren, nicht die Aktualisierungsbedingung. Bitte fragen Sie auch die Tante, die durch die Grube gegangen ist, mir den Grund zu nennen und mir die Lösung zu geben. Ich bin sehr dankbar ~
Sehen Sie sich die Aktualisierungsmethode von system.db.CDbCommand im Yii1.1-Klassenreferenzhandbuch an. Der Methodenprototyp lautet wie folgt:
<code>public integer update(string $table, array $columns, mixed $conditions='', array $params=array ( ))</code>
Davon hat $params eine besondere Erklärung
<code>Do not use column names as parameter names here. They are reserved for $columns parameter.</code>
Das bedeutet, dass Sie keine Feldnamen als Platzhalternamen verwenden.
Die Lösung ist
<code>'name=:cname',array(':cname'=>'lishenglong')</code>