@
знакът е променлива в SQL.
В MySQL се използва за съхраняване на стойност между последователни изпълнения на заявка или за прехвърляне на данни между две различни заявки.
Пример
Прехвърляне на данни между две заявки
SELECT @biggest:= MAX(field1) FROM atable;
SELECT * FROM bigger_table WHERE field1 > @biggest;
Друго използване е в класирането, за което MySQL няма естествена поддръжка.
Запазване на стойност за последователно изпълнение на заявка
INSERT INTO table2
SELECT @rank := @rank + 1, table1.* FROM table1
JOIN( SELECT @rank := 0 ) AS init
ORDER BY number_of_users DESC
Имайте предвид, че за да работи това, редът, в който се обработват редовете в заявката, трябва да бъде фиксиран, лесно е да се объркате.
Вижте:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
изявление за сортиране и класиране на mysql
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/
АКТУАЛИЗИРАНЕ
Този код никога няма да работи.
Току-що сте отворили връзката преди и никъде не са зададени @fields.
Така че в момента те държат null
стойности.
В допълнение, не можете да използвате @vars за обозначаване на имена на полета , можете само използвайте @vars за стойности.
$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)";