De @
sign is een variabele in SQL.
In MySQL wordt het gebruikt om een waarde op te slaan tussen opeenvolgende uitvoeringen van een zoekopdracht, of om gegevens over te dragen tussen twee verschillende zoekopdrachten.
Een voorbeeld
Gegevens overzetten tussen twee zoekopdrachten
SELECT @biggest:= MAX(field1) FROM atable;
SELECT * FROM bigger_table WHERE field1 > @biggest;
Een ander gebruik is in ranking, waarvoor MySQL geen native ondersteuning heeft.
Sla een waarde op voor opeenvolgende uitvoeringen van een zoekopdracht
INSERT INTO table2
SELECT @rank := @rank + 1, table1.* FROM table1
JOIN( SELECT @rank := 0 ) AS init
ORDER BY number_of_users DESC
Houd er rekening mee dat om dit te laten werken, de volgorde waarin de rijen in de query worden verwerkt, moet worden vastgesteld, het is gemakkelijk om dit verkeerd te doen.
Zie:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
mysql-sorteer- en rangschikkingsverklaring
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/
UPDATE
Deze code zal nooit werken.
Je hebt zojuist de verbinding eerder geopend en nergens zijn de @fields ingesteld.
Dus momenteel bevatten ze null
waarden.
Bovendien je kunt @vars niet gebruiken om veldnamen aan te duiden , kunt u alleen gebruik @vars voor waarden.
$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)";