我有一个名为season
的 MySQL 表
我从 PostgreSQL 获取数据,然后将其存储在数组中,然后使用 implode 函数传递存储在数组中的数据:
<小时/>$season = array(
'asset_id' => $asset_id,
'number' => $season_number
);
$season_col = implode(', ', array_keys($season));
$season_values = implode(', ', array_values($season));
然后我插入:
$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 错误可能是由于表的列之一定义为不排除某些值,例如“NOT NULL”。如果您尝试传递 $season['number'] = ''; 则执行将终止。 尝试检查 mysqli 对象中的 SQL 错误。 还请尝试将您的值用引号引起来。
$season_values = implode("','", array_values($season));
$insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES('".$season_values."')");
避免传递空值时出现错误。
关于php - MySQL 通过数组插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258204/