За последние 24 часа нас посетили 68810 программистов и 5437 роботов. Сейчас ищет 1301 программист ...

Как работать со значением переменной за пределами функции - PHP

Тема в разделе "PHP для новичков", создана пользователем Nikolai_G, 10 окт 2017.

  1. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    Здравствуйте, возникла следующая проблема, есть некая функция (код которой представлен ниже) в функции есть переменная $count1. Как после выполнения функции сохранить последние значение переменной для дальнейшей работы с ним? Если можно конкретный пример кода)))

    PHP:
    1. function writeCSV(){          
    2. global $batchNumber, $pdo,$count1;
    3. $count1=0;
    4. $handle = fopen("33-09-17.brp", "r");
    5. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    6.      $count1++;
    7.    
    8.         if($count1>1){
    9.   $sql='UPDATE '.$batchNumber.' SET iol='.$data[3].' , mtf='.$data[5].' WHERE id='.$data[0].' ';  
    10.      $pdo->exec($sql);  
    11.         }  
    12. }
    13.         fclose($handle);
    14.         return $count1;
    15.         }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.840
    Симпатии:
    1.338
    Адрес:
    Лень
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Почему бы просто не передать эти переменные в виде параметров? Нафига глобалы костылить?
     
  4. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    Я php юзаю пару недель) т.е function writeCSV($batchNumber, $pdo, $count1 ) так передать в виде параметров я правильно понимаю? У меня через return почему то не получилось) если можно напишите как реализовать через return в моём коде) если не сложно конечно)
     
  5. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    Переделал все функции в соответствии с т советом) убрал global и вместо этого стал передавать переменные в качестве параметров, функции перестали работать) вот код всего скрипта) скрипт запускается по нажатию кнопки формы) если не сложно подскажите где ошибка)
    PHP:
    1. //ПОДКЛЮЧЕНИЕ К СЕРВЕРУ И БАЗЕ ДАННЫХ
    2. try
    3. {  
    4. $pdo = new PDO('mysql:host=localhost;dbname=test', 'admin', 'admin');
    5.   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    6.   $pdo->exec('SET NAMES "utf8"');
    7. }
    8. catch (PDOException $e)
    9. {
    10.   $output = 'Неудалось подключиться к базе данных.'. $e->getMessage();
    11.   include 'output.html.php';
    12.   exit();
    13. }
    14. $output = 'Соединение с базой данных установлено.';
    15. include 'output.html.php';
    16. $batchNumber=$_REQUEST['batchnumber'];
    17. $Made=$_REQUEST['made'];
    18. //Создается новая таблица
    19.   function createNewTable($batchNumber,$pdo){
    20. $sql='CREATE TABLE '.$batchNumber.'(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, iol DOUBLE, mtf DOUBLE, rejected1 TEXT, rejected2 TEXT, rejected3 TEXT, rejected4 TEXT )DEFAULT CHARACTER SET utf8 ENGINE=InnoDB';
    21. $pdo->exec($sql);
    22. }
    23. //Таблица заполняется нулями
    24. function writeZero($batchNumber,$Made,$pdo){
    25. while($Made>$count){
    26.      $count++;
    27.     $sql='INSERT INTO '.$batchNumber.'(id , iol , mtf , rejected1 , rejected2 , rejected3 , rejected4) VALUES(  "0" , "0" , "0" , "0" , "0" , "0" , "0" )';
    28.   $pdo->exec($sql);
    29. }  
    30. }
    31. //Работа с CSV файлом и изменение значений строк таблицы на значения взятые из CSV файла      
    32. function writeCSV($batchNumber,$pdo){          
    33. $count1=0;
    34. $handle = fopen("33-09-17.brp", "r");
    35. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    36.      $count1++;
    37.    
    38.         if($count1>1){
    39.   $sql='UPDATE '.$batchNumber.' SET iol='.$data[3].' , mtf='.$data[5].' WHERE id='.$data[0].' ';  
    40.      $pdo->exec($sql);  
    41.         }  
    42. }
    43.         fclose($handle);
    44.         return $count1;
    45.         }
    46.        
    47. createNewTable();
    48. writeZero();
    49. writeCSV();
    50. $result = writeCSV($batchNumber, $pdo);
    51. echo $result;