Php 使用循环插入数据时出现数据库错误

Php 使用循环插入数据时出现数据库错误,php,mysql,sql,for-loop,mysqli,Php,Mysql,Sql,For Loop,Mysqli,我想用动态php变量在数据库中插入数据,当我在数据库中检查脚本时,我只有一条记录:( $low\u 0=0; $low_1=1; $low_2=2; $nr=9; 对于($i=0;$i

我想用动态php变量在数据库中插入数据,当我在数据库中检查脚本时,我只有一条记录:(

$low\u 0=0;
$low_1=1;
$low_2=2;
$nr=9;
对于($i=0;$i<$nr;$i++){
$sql='插入程序当前(ora、程序、最小值、最大值、注册日期)
值('.'.'${'low'.$i}、'.11、'.22、'.33、'.$timp')”;
回显“$sql”。
”; } if(mysqli_查询($db,$sql)){ 回显“数据发送”。“
”; }否则{ 回显“发送错误”。.mysqli_错误($sql)。“
”; }
将循环更改为:

$sql = 'INSERT INTO prognoza_curenta (ora, prognoza, min, max, reg_date)  VALUES';
for ($i = 0; $i < $nr; $i++) {
    $sql .= ' (' . "${'low_' . $i}, " . "11," . "22," . "33," . "'$timp')";
}
$sql='INSERT INTO prognoza_curenta(ora、prognoza、min、max、reg_date)值';
对于($i=0;$i<$nr;$i++){
$sql.='(“${'low'.$i},”.11、“.22、”.33、“$timp”)”;
}

将循环更改为:

$sql = 'INSERT INTO prognoza_curenta (ora, prognoza, min, max, reg_date)  VALUES';
for ($i = 0; $i < $nr; $i++) {
    $sql .= ' (' . "${'low_' . $i}, " . "11," . "22," . "33," . "'$timp')";
}
$sql='INSERT INTO prognoza_curenta(ora、prognoza、min、max、reg_date)值';
对于($i=0;$i<$nr;$i++){
$sql.='(“${'low'.$i},”.11、“.22、”.33、“$timp”)”;
}

准备语句的解决方案:

$stmt = $conn->prepare("INSERT INTO prognoza_curenta (ora, prognoza, min, max, reg_date) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $ora, $prognoza, $min, $max, $reg_date);

// set parameters and execute
for ($i = 0; $i < $nr; $i++) {
    $ora= ${'low_' . $i};
    $prognoza= "11";
    $min= '22';
    $max = '33';
    $reg_date = $timp;
    $stmt->execute();
}
$stmt=$conn->prepare(“插入当前程序(ora、prognoza、min、max、reg_date)值(?,,,,?)”;
$stmt->bind_param(“sssss”、$ora、$prognoza、$min、$max、$reg_date);
//设置参数并执行
对于($i=0;$i<$nr;$i++){
$ora=${'low'.$i};
$prognoza=“11”;
$min='22';
$max='33';
$reg_日期=$timp;
$stmt->execute();
}

正如
@MarkBaker
所建议的,这是准备语句的过程。请让我知道。

准备语句的解决方案:

$stmt = $conn->prepare("INSERT INTO prognoza_curenta (ora, prognoza, min, max, reg_date) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $ora, $prognoza, $min, $max, $reg_date);

// set parameters and execute
for ($i = 0; $i < $nr; $i++) {
    $ora= ${'low_' . $i};
    $prognoza= "11";
    $min= '22';
    $max = '33';
    $reg_date = $timp;
    $stmt->execute();
}
$stmt=$conn->prepare(“插入当前程序(ora、prognoza、min、max、reg_date)值(?,,,,?)”;
$stmt->bind_param(“sssss”、$ora、$prognoza、$min、$max、$reg_date);
//设置参数并执行
对于($i=0;$i<$nr;$i++){
$ora=${'low'.$i};
$prognoza=“11”;
$min='22';
$max='33';
$reg_日期=$timp;
$stmt->execute();
}

正如
@MarkBaker
所建议的,这是prepare语句的过程。请告诉我。

您错过了运行
mysqli_query
内部循环。此外,您还可以将
$sql
连接起来,并且只能连接一次。$sql.='INSERT..;从学习在sql查询中使用带有绑定变量的prepared语句开始,然后您就可以了不必担心这样会严重损坏字符串。您正在覆盖$sql,插入它时只剩下最后一个循环。Thx为所有提示,它现在正在工作。您错过了运行
mysqli\u query
内部循环。此外,您还可以连接
$sql
,并且只能连接一次。$sql.='insert..;从学习使用在SQL查询中使用带绑定变量的语句,这样您就不必担心字符串会被严重损坏。您正在覆盖$SQL,插入它时只剩下最后一个循环。Thx对于所有提示,它现在起作用了。