Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL插入数组_Php_Mysql - Fatal编程技术网

Php MySQL插入数组

Php MySQL插入数组,php,mysql,Php,Mysql,我有一个MySQL表,名为seasure 我从PostgreSQL获取数据,然后将其存储在数组中,然后使用内爆函数传递存储在数组中的数据: 然后我插入: $insert_season = mysqli_query($conn, "INSERT INTO season(".$season_col.") VALUES(".$season_values.")"); 这是我插入数据的6个表之一,问题是,当我运行代码时,它不会一次插入所有数据,我必须在插入所有数据之前重新加载页面数次。 我还必须补充一

我有一个MySQL表,名为
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";
}