首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL插入彻底的数组

问MySQL插入彻底的数组
EN

Stack Overflow用户
提问于 2017-05-30 09:17:39
回答 2查看 57关注 0票数 0

我有一个MySQL表,名为season

我从PostgreSQL中获取数据,然后将其存储在数组中,然后使用内爆函数传递存储在数组中的数据:

代码语言:javascript
复制
$season = array(
        'asset_id' => $asset_id,
        'number' => $season_number
    );
$season_col = implode(', ', array_keys($season));
$season_values = implode(', ', array_values($season));

然后插入:

代码语言:javascript
复制
$insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES(".$season_values.")");

这是我要插入数据的6个表之一,问题是,当我运行代码时,它没有一次插入所有数据,在插入所有数据之前,我必须重新加载页面几次。我还必须补充的是,这些表都与外键连接在一起,而且我还试图禁用外键检查,但它对我没有任何帮助。

我还在php中检查重复和不存在的数据:

代码语言:javascript
复制
$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.")");
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2017-05-30 09:31:34

我的猜测是,您在执行过程中遇到了SQL错误,这可能是因为表中的一个列被定义为不除某些值之外,例如“NULL”。如果您试图传递$调期‘’number‘=’‘,则执行将终止;尝试检查mysqli对象中的SQL错误。也尝试用引号包装你的值。

代码语言:javascript
复制
$season_values = implode("','", array_values($season));
$insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES('".$season_values."')");

以避免在传递空值时出现错误。

票数 0
EN

Stack Overflow用户

发布于 2017-05-30 09:31:37

您可以使用此代码动态创建查询。

代码语言:javascript
复制
$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";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44258204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档