Php 使用循环插入数据时出现数据库错误
我想用动态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
$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对于所有提示,它现在起作用了。