Php mysqli_查询的奇怪行为

Php mysqli_查询的奇怪行为,php,mysql,mysqli,Php,Mysql,Mysqli,我遇到了mysqli_查询奇怪行为的问题。有一个foreach循环来更新表行,但是最后一个循环的更新没有写入数据库(所有其他更新都成功写入)。没有错误,mysqli_受影响的_行按其应该的方式返回1。代码从头到尾都是通过mysqli_查询后的echo语句确认的 我试图在一个只有一个元素的数组中循环,但遇到了同样的问题 这是怎么回事?有没有人遇到过同样的问题 好的……这是代码的重要部分,整个代码是不可能的,因为最多允许30000个字符。我还回显了sql字符串,一切都很完美。但是正如我所说的,最后一

我遇到了mysqli_查询奇怪行为的问题。有一个foreach循环来更新表行,但是最后一个循环的更新没有写入数据库(所有其他更新都成功写入)。没有错误,mysqli_受影响的_行按其应该的方式返回1。代码从头到尾都是通过mysqli_查询后的echo语句确认的

我试图在一个只有一个元素的数组中循环,但遇到了同样的问题

这是怎么回事?有没有人遇到过同样的问题

好的……这是代码的重要部分,整个代码是不可能的,因为最多允许30000个字符。我还回显了sql字符串,一切都很完美。但是正如我所说的,最后一个循环(最后一次执行循环时)的更新没有写入MySQL数据库

$sql_getRelations = "SELECT id_machine, device_id, serial_number, variant_id, company_id, last_file FROM view_machines "
        . "WHERE company_id NOT IN ('" . implode( '\',\'' , $btc_companies) . "') "
//        . "AND id_machine = 158 "
        . "AND device_type_id = 4 AND machine_status = 'active' "
        . "ORDER BY id_machine ASC;";
$result_relations = mysqli_query($db_ed, $sql_getRelations);
$relations_arr = mysqli_fetch_all($result_relations, MYSQLI_ASSOC);
mysqli_free_result($result_relations);

foreach($relations_arr as $machine){
    //...some other code here
    $sql_update_device = "UPDATE device SET last_file = '" . $str_max_ts . "' WHERE id_device = " . $machine['device_id'] . ";";
    $update_device = mysqli_query($db_ed, $sql_update_device);
    if (!$update_device) {
        error_log("\r\n" . date("Y-m-d H:i:s") . ': !!!!Updatefehler device: ' . $machine['device_id'] . ": " . mysqli_error($db_ed), 3, "C:/xampp/htdocs/cronjob/error_log.txt");
    }
    echo $machine['id_machine'] . ', ';
}
mysqli_close($db_ed);

我将对文本文件执行如下调试。在外部循环中插入数据收集,然后将其清除,并将其归零到内部块中。分而治之的策略

我本想让我的头进入你的电子邮件php,但它是一个foreach块675行:p

PHP:

注:上次更新stmt的目的是不更改任何受影响的数据=0

模式:

create table t921
(   id int auto_increment primary key,
    thing varchar(100) not null,
    uniqueNum int not null,
    views int not null,
    unique key(uniqueNum)
);

创建一个ok。我将看看如果所有其他更新都运行了,我能做些什么,然后出现故障,并且您的一些列可能接受空/空值。很难说,因为我们没有代码可以使用。您需要发布所有相关的代码以及db模式。由于列长度也太短,它可能会“静默”失败。整个代码不可能,因为允许的最大字符数为30000个。当然,这是因为您需要更新一个最小的完整、可验证的示例。没有一个冗长的代码供人们在出错的过程中挖掘。我编辑了问题并发布了重要的代码…有什么想法吗?
2016-09-19 18:23:57: Start
2016-09-19 18:23:57: Affected rows: 1, Insert id: 27
2016-09-19 18:23:57: UPDATE id=1, Affected rows: 1
2016-09-19 18:23:57: UPDATE id=1, Affected rows: 0
create table t921
(   id int auto_increment primary key,
    thing varchar(100) not null,
    uniqueNum int not null,
    views int not null,
    unique key(uniqueNum)
);