php 将插入到 mysql 从数组与 mysqli

标签: sql MySQL PHP
发布时间: 2017/4/9 23:13:16
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

你好我想从解析 json 插入一些数据到表中,但当我做它,它不起作用,它返回 0 行,我错过了什么吗?我新还与这个"mysqli"。我有超过 25000 的行插入到表。thx

$mysqli = mysqli_connect('localhost', 'root', '', '');

$allData = $dataSource->getAllData();
foreach ($allData as $key => $value) {
    $query = 'INSERT INTO `table`(`data_id`, `name`) VALUES (' . $value['data_id'] . ', ' . $value['name'] . ')';
    $result = mysqli_query($mysqli, $query);
}

它现在正常工作了,它插入对象的所有数据,代码,我要向 thx 的答复有点像这个样子︰

$mysqli = mysqli_connect('localhost', 'root', '', '') or die(mysqli_connect_error());
if (!$mysqli) {
    die('Could not connect: ' . mysqli_error());
}

$allData = $dataSource-getAllData(); >

foreach ($allData as $key => $value) {
    $query = mysqli_prepare($mysqli, "INSERT INTO `table`(`data_id`, `name`) VALUES (?, ?)");
    mysqli_stmt_bind_param($query, 'is', $value['data_id'], $value['name']);
    mysqli_stmt_execute($query);
    mysqli_stmt_close($query);
}

希望在这里一切都很好,我在这 mysqli 新,我需要大量的编程实践

解决方法 1:

看起来像你应该设置单引号周围的数据值。此外添加 mysqli_error 检查你 mysqli_query 线这样你可以看到发生了什么︰

$allData = $dataSource->getAllData();
foreach ($allData as $key => $value) {
    $query = "INSERT INTO `table`(`data_id`, `name`) VALUES ('" . $value['data_id'] . "', '" . $value['name'] . "')";
    $result = mysqli_query($mysqli, $query) or die(mysqli_error());
}

或更好的是,使用 mysqli_stmt_bind_param 喜欢这。允许 MySQLi 处理而不必担心单引号放置整个查询数据构建。此外,添加检查 mysqli_connect_error 上你 mysqli_connect 线︰

// Connecting, selecting database
$mysqli = mysqli_connect('localhost', 'root', '', '') or die(mysqli_connect_error());

$allData = $dataSource->getAllData();
foreach ($allData as $key => $value) {
    // Set the query.
    $query = "INSERT INTO `table`(`data_id`, `name`) VALUES (?, ?)";

    // Bind the params.
    // mysqli_stmt_bind_param($query, 'ss', $value['data_id'], $value['name']);
    mysqli_stmt_bind_param($query, 'is', $value['data_id'], $value['name']);

    // Run the query.
    $result = mysqli_query($mysqli, $query) or die(mysqli_error());
}

请注意,我有为注释的行 mysqli_stmt_bind_param 因为它不是我清楚如果你 $value['data_id'] 是数字或字符串。mysqli_stmt_bind_param($query, 'is',…指的第一个值是一个整数 ( i ) 和下一个值是一个字符串 ( s )。随时调整到最适合您的实际数据类型。

官方微信
官方QQ群
31647020