“执行While循环”可与echo一起很好地工作,但使用循环内部的函数只能循环一次

时间:2018-09-25 20:41:00

标签: php mysql

该代码应该在数据库中插入100行。

但是,当我运行它时,它仅循环一次,插入一行并停止。

我将函数调用替换为:

echo $keywords[4].'<br>';

它完美地工作。没有问题

缺少什么,以便它将所有行插入数据库?

我应该更改q add,以便代码将文件中的所有行插入

这是循环代码:

do{

        //Insert row content into array.
        $keywords = preg_split("#\<(.*?)\>#", $row);

        //Insert relevant data into DB


        add_data($keywords);

        }
    else{
            // If row is irrelevant - continue to next row
            continue;
        }

}while (strpos($row, 'Closed P/L') != true);

这是功能

function add_data($keywords)
{
    global $db;

    $ticket =$keywords[2];
    $o_time = $keywords[4];
    $type = $keywords[6];
    $size = $keywords[8];
    $item = substr($keywords[10], 0,  -1);
    $o_price = $keywords[12]; 
    $s_l = $keywords[14];
    $t_p = $keywords[16];
    $c_time = $keywords[18];
    $c_price = $keywords[20];
    $profit = $keywords[28];

    try
    {
        $sql = "
            INSERT INTO `data`
            (ticket, o_time, type, size, item, o_price, s_l, t_p, c_time, c_price, profit)
            VALUES
            (:ticket, :o_time, :type, :size, :item, :o_price, :s_l, :t_p, :c_time, :c_price, :profit)"; 


        $stmt = $db->prepare($sql);
        $stmt->bindParam('ticket', $ticket, PDO::PARAM_STR);
        $stmt->bindParam('o_time', $o_time, PDO::PARAM_STR);
        $stmt->bindParam('type', $type, PDO::PARAM_STR);
        $stmt->bindParam('size', $size, PDO::PARAM_STR);
        $stmt->bindParam('item', $item, PDO::PARAM_STR);
        $stmt->bindParam('o_price', $o_price, PDO::PARAM_STR);
        $stmt->bindParam('s_l', $s_l, PDO::PARAM_STR);
        $stmt->bindParam('t_p', $t_p, PDO::PARAM_STR);
        $stmt->bindParam('c_time', $c_time, PDO::PARAM_STR);
        $stmt->bindParam('c_price', $c_price, PDO::PARAM_STR);
        $stmt->bindParam('profit', $profit, PDO::PARAM_STR);

        $stmt->execute();

        //return true;  
    }
    catch(Exception $e)


    {
       return false;
       echo 'something is wrong. Here is the system\'s message:<br>'.$e;
    }
}

0 个答案:

没有答案