我有一个MySQL表,名为season
我从PostgreSQL中获取数据,然后将其存储在数组中,然后使用内爆函数传递存储在数组中的数据:
$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.")");
}
}发布于 2017-05-30 09:31:34
我的猜测是,您在执行过程中遇到了SQL错误,这可能是因为表中的一个列被定义为不除某些值之外,例如“NULL”。如果您试图传递$调期‘’number‘=’‘,则执行将终止;尝试检查mysqli对象中的SQL错误。也尝试用引号包装你的值。
$season_values = implode("','", array_values($season));
$insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES('".$season_values."')");以避免在传递空值时出现错误。
发布于 2017-05-30 09:31:37
您可以使用此代码动态创建查询。
$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";
}https://stackoverflow.com/questions/44258204
复制相似问题