我试图从导入的csv文件计算动量指标,这是股票市场的历史数据。我制作了“momentum\u data”表,其中包含“date,close,close14,momentum”列。我遇到的问题是用pdo将我的数据从php插入到momentum-u数据表中。
我做的最贴切的解释是使用以下代码:
foreach ($sql as $data) {
$tanggal = $data['Date'];
$close = $data['Close'];
$close[] = $data['Close'];
$jumlah = count($close);
$momentum= 0;
for($i=14;$i<$jumlah;$i++){
$close1 = $close[$i-14];
$momentum = $close[$i]/$close1*100;
$sql2->bindParam(':close14', $close);
$sql2->bindParam(':Date', $tanggal);
$sql2->bindParam(':close', $close1);
$sql2->bindParam(':momentum', $momentum);
$sql2->execute();}}
和查询:
$conn = new PDO('mysql:host='.$host.';dbname='.$database, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = $pdo->prepare("SELECT * FROM csv_data ORDER BY Date");
$sql->execute();和
$conn = new PDO('mysql:host='.$host.';dbname='.$database, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql2 = $conn->prepare("INSERT INTO momentum_data VALUES (:Date,:close,:close14,:momentum)");
数据被插入到数据库中,但数据是根据数据所在的行复制的。输出将如下所示
|no|data1|data2|
|1 |1 |1 |
|2 |2 |2 |
|2 |2 |2 |
|3 |3 |3 |
|3 |3 |3 |
|3 |3 |3 |
我的代码有什么问题吗(很明显)。任何帮助或暗示都会非常感激。对不起,英语太差了。
1条答案
按热度按时间disho6za1#
由
preparing
查询和binding
循环外的参数只需在执行语句之前重新分配循环内的变量即可~尽管我发现这里的变量命名有点混乱。$stmt->bindParam(':date', $tanggal );
$stmt->bindParam(':close', $close1 );
$stmt->bindParam(':close14', $close );
$stmt->bindParam(':momentum', $momentum );
}