Der @
sign ist eine Variable in SQL.
In MySQL wird es verwendet, um einen Wert zwischen aufeinander folgenden Abfragen zu speichern oder um Daten zwischen zwei verschiedenen Abfragen zu übertragen.
Ein Beispiel
Daten zwischen zwei Abfragen übertragen
SELECT @biggest:= MAX(field1) FROM atable;
SELECT * FROM bigger_table WHERE field1 > @biggest;
Eine weitere Verwendung ist das Ranking, für das MySQL keine native Unterstützung hat.
Speichern Sie einen Wert für aufeinanderfolgende Ausführungen einer Abfrage
INSERT INTO table2
SELECT @rank := @rank + 1, table1.* FROM table1
JOIN( SELECT @rank := 0 ) AS init
ORDER BY number_of_users DESC
Beachten Sie, dass die Reihenfolge, in der die Zeilen in der Abfrage verarbeitet werden, festgelegt sein muss, damit dies funktioniert. Dies kann leicht falsch gemacht werden.
Siehe:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
Mysql-Sortierungs- und Ranking-Anweisung
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/
AKTUALISIEREN
Dieser Code wird niemals funktionieren.
Sie haben die Verbindung gerade erst geöffnet und nirgendwo sind die @fields gesetzt.
Also enthalten sie derzeit null
Werte.
Darüber hinaus können Sie @vars nicht verwenden, um Feldnamen anzugeben , können Sie nur Verwenden Sie @vars für Werte.
$sql1 = "
LOAD DATA LOCAL INFILE 'import.csv'
REPLACE INTO TABLE tablename
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"'
IGNORE 1 LINES
(`normalField`, @field1, @field2, `normalField2`, @field3, @field4)";