php - 将数据插入数据库的正确方法是什么?

标签 php mysql

在 php 中,我尝试使用 INSERT 查询插入数组。我收到错误:

检查数据库连接列计数与第 1 行的值计数不匹配。

我是执行此类插入的新手,也是使用内爆的新手。请帮助提供某种类型的解决方案。我的表格列是

IaasForm_id (PK), From_id(FK), roleApp, os, vCPU, Memory, val, Performance, HighWrite, fwconfig, transIn, transOut, bkUp

和sql

$sql = "INSERT INTO FORM(From_id, roleApp, os, vCPU, Memory, val, 
        Performance, HighWrite, fwconfig, transIn, transOut, bkUp) 
        VALUES ((SELECT MAX(Form_id) FROM FORM ), '" . implode("','", $array[$i]) . "','" . $hw . "','" . $_POST[ 'fwconfig' ] . "','" . $_POST[ 'transIn' ] . "','" . $_POST[ 'transOut' ] . "','" . $_POST[ 'bkUp' ] . "')";

最佳答案

您不应该以这种方式将数据插入数据库。这是一种非常古老的插入数据方式。现在有一种优雅的方法可以非常有效地执行 sql 作业。最佳实践总是得到所有人的认可并得到广泛应用。

查看一个非常简单的示例,您应该如何执行此操作:

<?php

$host = "localhost";
$username = "your_db_username";
$password = "your_db_password";
$dbname = "your_db_name";

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    // Sets the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Prepares sql with PDO's PDO::prepare() method
    $sql = "INSERT INTO FORM(From_id, roleApp, os, vCPU, Memory, val, Performance, HighWrite, fwconfig, transIn, transOut, bkUp)
VALUES ((SELECT MAX(Form_id) FROM FORM), :roleApp, :os, :vCPU, :Memory, :val, :Performance, :HighWrite, :fwconfig, :transIn, :transOut, :bkUp)";
    $stmt = $conn->prepare($sql);

    // Prepares data
    $data = [
      ':roleApp' => 'value',
      ':os' => 'value',
      ':vCPU' => 'value',
      ':Memory' => 'value',
      ':val' => 'value',
      ':Performance' => 'value',
      ':HighWrite' => 'value',
      ':fwconfig' => 'value',
      ':transIn' => 'value',
      ':transOut' => 'value',
      ':bkUp' => 'value',
    ];

    // Inserts row into table
    $stmt->execute($data);

} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

希望这能帮助您理解。快乐编码!

关于php - 将数据插入数据库的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59978327/

相关文章:

php - 是否可以在不使用 where 子句的情况下从 2 个表中进行选择?

php - 如何使用 PHP 实现 OWASP 规则 5 来缓解 XSS

php - 调用 bool 值上的成员函数bind_param(),使用占位符时函数prepare()返回false

mysql - SQL - 计算从事相同工作的人数。给出简单代码

mysql - Typeorm 列类型依赖于数据库

mysql - Ruby 1.9 + MySQL 访问错误

PHP,将数据转换成Unix时间戳格式

php - 使用 htaccess 清理 URL 破坏了我的 css

php - 使用 $_FILES 更新图像时出错

mysql - 更新Where字段是最小的数字