php - MySQL 通过数组插入

标签 php mysql

我有一个名为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/

相关文章:

php - 获取 CSS 文件路由

php - 如何排除 MySQL 查询中的匹配记录?

mysql - 如何以特定格式查找mysql中两个日期时间字段的差异

java - JDBC mysql 从数据库设置和检索数据

mysql MIN 和 MAX 函数与 if 语句

php - 有没有办法在 php 中覆盖/重命名/重新映射函数?

PHP 从地址栏清理 Url

php - Laravel 检查 url 是否存在并且什么都不做

php - 404 未找到,请求的 URL <<url name>> 在 wordpress 的此服务器上未找到

php - 使用 javascript 或 php 获取表单字段名称?