Проблемы со вставкой строк

  • Автор темы Johnny Rodgger
  • Обновлено
  • 13, May 2024
  • #1
Всем привет. У меня есть файл csv, и я пытаюсь вставить его в свою таблицу (codigo, stud).

  if(file_exists($ruta.$nombre_archivo.'.'."csv")) {
 $registro = fopen($ruta.$nombre_archivo.'.'."csv", "r");
 $BD = new ConectionDB();
 while (($data = fgetcsv($registro, 200, ",")) !== FALSE) {
 $sth = "INSERT into SC_TEMP (cod, nom) values ('$data[0]', '$data[1]')";
 $recordSet = $BD->prepare($sth);
 $recordSet->bindParam('data[0]', $cod);
 $recordSet->bindParam('data[1]', $nom);
 $recordSet->execute();
 }
}


PHP: в моем CSV есть следующие строки:

11111, БРАЙАН

11252, ДЖОЗЕФ

52362,МАКДОНАЛЬД

В третьих строках код усекается. В чем ошибка?

Johnny Rodgger


Рег
19 Jun, 2012

Тем
83

Постов
239

Баллов
664
  • 07, Jun 2024
  • #2
Здесь работает нормально.

Однако вы используете Conection в файле PHP и Conexion в классе (который вообще не должен работать). Но да, здесь это работает.

Я предполагаю, что вы делаете что-то еще, а не просто тестируете код, который я вам дал.

Вот код, который я сейчас тестирую (я создал тестовую базу данных, чтобы протестировать скрипт):
 
<?php

class ConexionDB extends PDO {
 public function __construct () {
 try {
 parent:: __construct('mysql:host=localhost;dbname=cntrl;charset=utf8', 'root','root');
 parent:: setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 } catch (Exception $ex) {
 die ('Database is not exist');
 }
 }
 function __destruct(){
 }
}

if (file_exists('test.csv')) {
 echo 'file exists';
 $registro = fopen('test.csv', "r");
 $BD = new ConexionDB();
 while (($data = fgetcsv($registro, 200, ",")) !== FALSE) {
 $sth = $BD->prepare("INSERT INTO SC_TEMP (cod, nom) VALUES (:cod, :nom)"); //you should really not have a all-caps table name
 $sth->execute(array(':cod'=>$data[0],':nom'=>$data[1]));
 }
} else {
 echo 'nope';
}

?>
PHP:
 

Сидорович Дмитрий


Рег
14 Apr, 2011

Тем
83

Постов
210

Баллов
635
  • 08, Jun 2024
  • #3
Ты делаешь это неправильно. Вот, попробуйте это:
 
if (file_exists($ruta.$nombre_archivo.'.'."csv")) {
 $registro = fopen($ruta.$nombre_archivo.'.'."csv", "r");
 $BD = new ConectionDB();
 while (($data = fgetcsv($registro, 200, ",")) !== FALSE) {
 $sth = $BD->prepare("INSERT INTO SC_TEMP (cod, nom) VALUES (:cod, :nom)"); //you should really not have a all-caps table name
 $sth->execute(array(':cod'=>$data[0],':nom'=>$data[1]));
 }
}
PHP:
 

Almitech


Рег
01 Jan, 2011

Тем
68

Постов
185

Баллов
535
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно