在 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/