Массовая вставка Php

У меня есть код с php, использующий массовую вставку. Я запускаю код, и ошибки нет. Проблема в том, что с этим кодом нет ВЫВОДА, и появляется пустая страница/экран. Все, что я хочу сделать, это иметь вывод с страницу и с базой данных, используя этот код..

 <?php

     $dbh = odbc_connect(
           "DRIVER={SQL Server Native Client 10.0};Server=.;Database=ECPNWEB", 
           "sa", "ECPAY");




 if (($handle = fopen("c:\\tblmcwd.txt", "r")) !== FALSE) {
     while (($data = fgetcsv($handle, 4096, "|")) !== FALSE) {
         if (count($data) == 10) {
             $sql = "INSERT INTO [dbo].[tblMCWD] (
                         [ID], 
                         [ConsumerCode], 
                         [ConsumerName], 
                         [AccountStatus], 
                         [AccountNumber], 
                         [DueDate], 
                         [CurrentBill], 
                         [PreviousBill], 
                         [TotalDiscount], 
                         [TotalGrossAmountDue]
                     ) VALUES (
                         ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
                     )";

             $stmt = $dbh->prepare($sql);
             $stmt->bindValue(1, $data[0]);
             $stmt->bindValue(2, $data[1]);
             $stmt->bindValue(3, $data[2]);
             $stmt->bindValue(4, $data[3]);
             $stmt->bindValue(5, $data[4]);
             $stmt->bindValue(6, $data[5]);
             $stmt->bindValue(7, $data[6]);
             $stmt->bindValue(8, $data[7]);
             $stmt->bindValue(9, $data[8]);
             $stmt->bindValue(10, $data[9]);
             $stmt->execute();
         }
     }
     fclose($handle);
 }
 ?>

person Kristian Hernan C. Manuel    schedule 05.12.2012    source источник
comment
Вы тут ничего не повторяете??? так что выхода не будет   -  person Mathlight    schedule 05.12.2012
comment
@MarcMeesters Как я могу отобразить данные / текстовый файл в форме, если успешной транзакции с базой данных не будет? Пожалуйста, помогите мужчинам с этим вопросом, MArc.   -  person Kristian Hernan C. Manuel    schedule 05.12.2012


Ответы (1)


Попробуй это:

....

$sql = "INSERT INTO [dbo].[tblMCWD] (
                     [ID], 
                     [ConsumerCode], 
                     [ConsumerName], 
                     [AccountStatus], 
                     [AccountNumber], 
                     [DueDate], 
                     [CurrentBill], 
                     [PreviousBill], 
                     [TotalDiscount], 
                     [TotalGrossAmountDue]
                 ) VALUES (
                     :ID, :ConsumerCode, :ConsumerName, :AccountStatus, :AccountNumber, :DueDate, :CurrentBill, :PreviousBill, TotalDiscount, TotalGrossAmountDue
                 )";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':ID', $data[0]);
$stmt->bindParam(':ConsumerCode', $data[1],PDO::PARAM_STR);
$stmt->bindParam(':ConsumerName', $data[2],PDO::PARAM_STR);
$stmt->bindParam(':AccountStatus', $data[3],PDO::PARAM_STR);
$stmt->bindParam(':AccountNumber', $data[4],PDO::PARAM_STR);
$stmt->bindParam(':DuaDate' , $data[5],PDO::PARAM_STR);
$stmt->bindParam(':CurrentBill', $data[6],PDO::PARAM_STR);
$stmt->bindParam(':PreviousBill', $data[7],PDO::PARAM_STR);
$stmt->bindParam(':TotalDiscount', $data[8],PDO::PARAM_STR);
$stmt->bindParam(':TotalGrossAmountDue', $data[9],PDO::PARAM_STR);
$stmt->execute();

if(!$stmt){    // Check if the query executed succesfull, if not, print the data...
    $printedString = "ID: %1$s ConsumerCode: %2$s ConsumerName: %3$s"; // and so on....
    $printedString = sprintf($printedString , $data[0],$data[1],$data[2]); // and so on...
} else{
    echo "Everything executed succesfully!<br />";
}

Дополнительную информацию можно найти здесь: Ссылка И здесь: Ссылка 2 А здесь: Ссылка 3

Используйте PDO::PARAM_STR для строк и PDO::PARAM_INT для целых чисел и попробуйте.

person Mathlight    schedule 05.12.2012
comment
Спасибо за помощь. Я думаю, что функция binvalue не поддерживается в ODBC. Я читал некоторые статьи о том, что с ней есть некоторые ошибки ... поэтому теперь я хочу найти эквивалентную функцию этого значения привязки. Еще раз спасибо за ответ. . - person Kristian Hernan C. Manuel; 05.12.2012
comment
У меня все еще есть та же ошибка, говорящая, что .. Неустранимая ошибка: вызов функции-члена bindParam() для не-объекта в C:\xampp\htdocs\ecpay\bulk.php в строке 29 - person Kristian Hernan C. Manuel; 05.12.2012
comment
можно ли использовать PDO, даже если я использую только ODBC? - person Kristian Hernan C. Manuel; 05.12.2012
comment
@KristianHernanC.Manuel Насколько я знаю, это не проблема. Это безопасно. Но я не спец в этом... - person Mathlight; 05.12.2012