【问题标题】:Database Error when insert data with loop使用循环插入数据时出现数据库错误
【发布时间】:2016-09-03 03:50:27
【问题描述】:

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

$low_0 = 0;
$low_1 = 1;
$low_2 = 2;
$nr = 9;

for ($i = 0; $i < $nr; $i++) {
    $sql = 'INSERT INTO prognoza_curenta (ora, prognoza, min, max, reg_date)
            VALUES (' . "${'low_' . $i}, " . "11," . "22," . "33," . "'$timp')";
    echo "$sql" . "<br>";
}

if (mysqli_query($db, $sql)) {
    echo 'Data send' . "<br>";
} else {
    echo 'Error send.' . mysqli_error($sql) . "<br>";
}

【问题讨论】:

  • 你错过了在循环内运行mysqli_query。您也可以连接$sql,并且只能连接一次。 $sql .= 'INSERT....';
  • 从学习在 SQL 查询中使用带有绑定变量的预准备语句开始,然后您就不必担心以这种方式严重破坏您的字符串
  • 您正在覆盖 $sql,插入时只保留最后一个循环。
  • 感谢所有提示它现在正在工作。

标签: php mysql sql for-loop mysqli


【解决方案1】:

把你的循环改成这样:

$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')";
}

【讨论】:

    【解决方案2】:

    准备好的声明的解决方案:

    $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();
    }
    

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

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2011-09-04
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多