Php MySQL插入数组
我有一个MySQL表,名为Php MySQL插入数组,php,mysql,Php,Mysql,我有一个MySQL表,名为seasure 我从PostgreSQL获取数据,然后将其存储在数组中,然后使用内爆函数传递存储在数组中的数据: 然后我插入: $insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES(".$season_values.")"); 这是我插入数据的6个表之一,问题是,当我运行代码时,它不会一次插入所有数据,我必须在插入所有数据之前重新加载页面数次。 我还必须补充一
seasure
我从PostgreSQL获取数据,然后将其存储在数组中,然后使用内爆函数传递存储在数组中的数据:
然后我插入:
$insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES(".$season_values.")");
这是我插入数据的6个表之一,问题是,当我运行代码时,它不会一次插入所有数据,我必须在插入所有数据之前重新加载页面数次。
我还必须补充一点,这些表都是用外键互连的,而且我尝试禁用外键检查,但它对我没有任何帮助
我还在php中检查重复和不存在的数据:
$check_for_season = mysqli_query($conn, "SELECT asset_id, number FROM season WHERE asset_id = ".$asset_id." AND number = ".$season_number." LIMIT 1");
if (mysqli_fetch_array($check_for_season)) {
echo "Updates data";
} else {
$insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES(".$season_values.")");
}
}
我有根据地猜测,您在执行过程中遇到SQL错误可能是由于表的某个列被定义为不包含某些值,例如“NOTNULL”。如果您试图通过$season['number']='',执行将终止; 尝试检查mysqli对象中的SQL错误。 同时尝试用引号将值括起来
$season_values = implode("','", array_values($season));
$insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES('".$season_values."')");
以避免传递空值时出错。您可以使用此代码动态创建查询
$conn = new PDO('mysql:host=' . $HOST . ';dbname=' . $DATABASE, $USERNAME, $PASSWORD);
$conn->exec("set names utf8");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$ins_query = 'INSERT INTO `' . $table_name . '` ';
$columns = array();
$columns_bindings = array();
foreach ($dataArray as $column_name => $data) {
$columns[] = $column_name;
$columns_bindings[] = ':' . $column_name;
}
$ins_query = $ins_query . '(' . implode(', ', $columns) . ') VALUES (' . implode(', ', $columns_bindings) . ')';
$stmt = $conn->prepare($ins_query);
foreach ($dataArray as $column_name => $data) {
$stmt->bindValue(":" . $column_name, $data);
}
if (!$stmt->execute()) {
print_r($stmt->errorInfo());
} else {
echo "Insertd";
}
你在发出声明后是否检查错误?你的问题不可能用给出的信息来回答<代码>我必须重新加载页面几次,然后才能全部插入。=>这毫无意义
我还必须补充一点,表都是用外键连接的,我还尝试禁用外键检查,但它对我没有任何帮助。
=>这与任何事情有什么关系?$season应该是多维数组还是其他什么?因为除此之外,我没有看到您想要插入的多个值。是的,我会检查errors@Mika如果没有意义的话——退后一步,想想还有什么可以在这里发挥作用。在这种情况下,大多数事情都不会神奇地发生。即使我传递的值都是整数,我也应该使用引号吗?如果没有引号,并且以某种方式传递了NULL值,则会导致错误,因为最终的SQL看起来像值(1,2,3),这是一个错误。
$conn = new PDO('mysql:host=' . $HOST . ';dbname=' . $DATABASE, $USERNAME, $PASSWORD);
$conn->exec("set names utf8");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$ins_query = 'INSERT INTO `' . $table_name . '` ';
$columns = array();
$columns_bindings = array();
foreach ($dataArray as $column_name => $data) {
$columns[] = $column_name;
$columns_bindings[] = ':' . $column_name;
}
$ins_query = $ins_query . '(' . implode(', ', $columns) . ') VALUES (' . implode(', ', $columns_bindings) . ')';
$stmt = $conn->prepare($ins_query);
foreach ($dataArray as $column_name => $data) {
$stmt->bindValue(":" . $column_name, $data);
}
if (!$stmt->execute()) {
print_r($stmt->errorInfo());
} else {
echo "Insertd";
}