Ответы пользователя по тегу PHP
  • Как парсить курс валют и записывать в БД?

    @sirocco Автор вопроса
    Инженер АСУТП
    Допёр с Вашей помощью, товарищи. СПАСИБО. Вот оно, решение:
    <?php
    
    $file='btc_status.lock';
    if(!flock($lock_file = fopen($file, 'w'), LOCK_EX | LOCK_NB))
      die("Already runninng\n");
      
    include 'config_db.php';
    include 'safemysql.class.php';
    $db = new SafeMysql();
    
    $fl=json_decode(file_get_contents("https://btc-e.com/api/3/ticker/btc_usd-ltc_usd?ignore_invalid=1"));
    
    $btc=$fl->btc_usd;
    
    if($btc->last>0)
    	{
    	//$sql = "INSERT INTO kurs SET mark = 'btce', date=NOW(), ?u"; // Для чего это?
    	$db->query("INSERT INTO kurs (mark, sell) VALUES ('btce',{$btc->sell})");
    	}
    mysql_close();
    ?>

    Вроде работает. Надеюсь с точки зрения безопасности и эстетики тоже всё верно.
    Ответ написан
    2 комментария
  • Как парсить курс валют и записывать в БД?

    @sirocco Автор вопроса
    Инженер АСУТП
    Ничего не получается.
    <?php
    
    $file='btc_status.lock';
    if(!flock($lock_file = fopen($file, 'w'), LOCK_EX | LOCK_NB))
      die("Already runninng\n");
      
    include("config_db.php");
    include 'safemysql.class.php';
    $db = new SafeMysql();
    
    $fl=json_decode(file_get_contents("https://btc-e.com/api/3/ticker/btc_usd-ltc_usd?ignore_invalid=1"));
    
    $btc=$fl->btc_usd;
    if($btc->last>0)
    	{
    	$sql = "INSERT INTO kurs SET mark = 'btce', date=NOW(), ?u";
    	$db->query->("INSERT INTO kurs SET ?u", $btc);
    	}
    mysql_close();
    ?>

    safemysql.class.php скачал...
    Вылетает ошибка: Parse error: syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /volume1/web/0test/12.php on line 17
    Строка 17 это
    $db->query->("INSERT INTO kurs SET ?u", $btc);
    Что с синтаксисом не так?

    Пробовал так изменить:
    .......
    if($btc->last>0)
    	{
    	$sql = "INSERT INTO kurs SET mark = 'btce', date=NOW(), ?u";
    	$result = $db->query("kurs");
    		while ($row = $db->fetch($result))
    		{   
        	echo $row['name'];
    		}
    	}
    mysql_close();

    Тогда такую ошибку даёт: Fatal error: SafeMySQL: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'kurs' at line 1. Full query: [kurs]. Error initiated in /volume1/web/0test/12.php on line 17, thrown in /volume1/web/0test/safemysql.class.php on line 601
    Строка 17:
    $result = $db->query("kurs");
    Строка 601 в файле safemysql.class.php:
    trigger_error($err,E_USER_ERROR);
    Что нужно исправить?
    Таблица в БД называется "kurs", поля - mark, date, sell.
    Ответ написан