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

  • Автор темы Johnny Rodgger
  • 17
  • Обновлено
  • 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

Тем
19

Постов
55

Баллов
245
  • 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

Тем
0

Постов
3

Баллов
3
  • 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

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно