sql insert

mirela_ivanova_

Registered
Здравейте,
имам в mysql таблица users с поле email и отделно в .txt файл имам много емайл, където всеки един емайл е на нов ред.
Въпроса ми е как мога да вкарам всички емайл от txt в полето email като всеки емайл да е нов запис ?
 
Четеш файла с fopen и fwrite след което вкарваш записите в array(); и следтова с foreach си ги записваш с mysql_query.
 
PHP:
$emails= file('filename.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);    
for( $i = count($emails); $i > 0; $i--) {
    mysql_query("INSERT INTO `row_name` TABLE ('email') VALUE ('".$emails[$i]."')");
}
Кажи дали работи, че не съм го пробвал! :wink:
 
mirela_ivanova_ каза:
Не работи :(
Грешка ли дава или?
PHP:
$emails= file('filename.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);    
for( $i = count($emails); $i > 0; $i--) {
    mysql_query("INSERT INTO `row_name` TABLE ('email') VALUE ('".$emails[$i]."')") or die(mysql_error());
}
Пиши така, за да ти изпише, ако има грешка в SQL-а! Нали промени името на таблицата и колоната?
 
Промених всичко :) Поне това го знам.
Не дава грешка а просто прави 2 празни записа вместо да въведе към 150 записа с емайла
 
Тогава направи това преди for-а, за да видиш какво има в масива и да сравниш с това, което ти е във файла.
PHP:
print_r($emails);
Съжалявам, че не мога сега да ти помогна повече, но трябва да излизам. Утре пак ще пиша, ако не си се оправил до тогава. :wink:
 
може би трябва да сложиш trim, ще е хубаво полето да е с колация utf8_general_ci


Код:
$emails= file('filename.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);    
for( $i = count($emails); $i > 0; $i--) {

    $email = trim($emails[$i]);

    mysql_query("INSERT INTO `row_name` TABLE ('email') VALUE ('".$email."')") or die(mysql_error());
}
 
Ами не работи, защото съм писал глупости снощи. :D Направил съм някаква измислена SQL заявка. Ето така вече трябва да работи: :wink:
PHP:
$emails = file('filename.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
for( $i = count($emails); $i > 0; $i--) {
    $email = trim($emails[$i]); 
    mysql_query("INSERT INTO `row_name` ('email') VALUE ('".$emails[$i]."')");
}
Иначе наистина е добре колацията ти да е utf8_general_ci.

embaka, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES уж трябва да вършат работата на trim, но ако пак остават някакви празни места не е зле да го има. :)

mirela_ivanova_, а защо полето в таблицата не ти е varchar? Едва ли има email по-дълъг от 255 символа (просто няма такъв). Няма смисъл да използваш текст. Той е за текс :D ~65000 символа.
 
направих таблицата varchar(255) с utf8_general_ci
и не записва нищо с този код

Код:
$emails = file('f.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
for( $i = count($emails); $i > 0; $i--) {
    $email = trim($emails[$i]); 
    mysql_query("INSERT INTO `users` ('email') VALUE ('".$emails[$i]."')");
}
 
Изписва ми
Код:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE ('email') VALUE ('')' at line 1
с trim

като поправих самият код и сложих това mysql_query("INSERT INTO `users` ('email') VALUE ('".$email."')"); вместо това mysql_query("INSERT INTO `row_name` TABLE ('email') VALUE ('".$email."')") or die(mysql_error());
с кода няма грешка но пак в таблицата нищо не се записва
 
mirela_ivanova_ каза:
някак така няма ли да стане
Код:
INSERT INTO  `таб`.`users` (
`email`
)
VALUES (
email1
email2
email..
email150
);
Мисля, че не, но не пречи да пробваш. :)

Пусни заявката директно през phpmyadmin:
[sql]INSERT INTO `users` ('email') VALUE ('proba@proba.bg')[/sql]
Ако има грешка, значи някъде бъркам в заявката. Иначе напарви кода така, за да ти изписва грешките:
PHP:
$emails = file('filename.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
for( $i = count($emails); $i > 0; $i--) {
    $email = trim($emails[$i]); 
    mysql_query("INSERT INTO `users` ('email') VALUE ('".$emails[$i]."')") or die(mysql_error());
}
 
SQL query:

INSERT INTO `users` ( 'email' ) VALUE(

'proba@proba.bg'
)
MySQL said:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''email') VALUE ('proba@proba.bg')' at line 1
 
а при кода с die ми изписва
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''email') VALUE ('')' at line 1
 

Back
Горе