Php mysqli更新行时出现奇怪的MySQL重复记录

Php mysqli更新行时出现奇怪的MySQL重复记录,php,mysql,mysqli,Php,Mysql,Mysqli,我在通过mysqli(php)更新表时遇到了奇怪的行为。我有一个简单的记录表: mysql> describe reports_1; +-------------+------------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Ex

我在通过mysqli(php)更新表时遇到了奇怪的行为。我有一个简单的记录表:

    mysql> describe reports_1;
    +-------------+------------------+------+-----+-------------------+-----------------------------+
    | Field       | Type             | Null | Key | Default           | Extra                       |
    +-------------+------------------+------+-----+-------------------+-----------------------------+
    | line_number | int(10) unsigned | NO   | PRI | NULL              | auto_increment              |
    | username    | varchar(30)      | YES  |     | NULL              |                             |
    | id          | int(10) unsigned | YES  |     | NULL              |                             |
    | stamp       | timestamp        | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
    | content     | varchar(1000)    | YES  |     | NULL              |                             |
    +-------------+------------------+------+-----+-------------------+-----------------------------+
行号是主键(id是外键)。在CLI中更新此表时,一切正常:

    mysql> update reports_1 set content='works fine' where line_number='24';
    Query OK, 1 row affected (0.00 sec)
然而,当我在php中执行完全相同的查询时,即

    $q = "update reports_1 set content='works fine' where line_number='24'";
    $update = $connection->query($q);
我的表中有一个双重(!)更新:

    mysql> select * from reports_1;
    +-------------+----------+------+---------------------+------------+
    | line_number | username | id   | stamp               | content    |
    ...
    |          24 | user     |  210 | 2016-02-04 11:56:14 | works fine |
    |          25 | user     |    0 | 2016-02-04 11:56:14 | works fine |
    +-------------+----------+------+---------------------+------------+
可以看到,非常出乎意料的是(对我来说)更新被复制,给定了一个自己的新密钥,时间戳是相同的,外键被设置为零

我不知道这是什么原因!有没有人能解释一下这种行为?这是预期的吗?我错过什么了吗

提前谢谢你的帮助

根据要求进行编辑 php脚本接收从js函数发送的数据,该函数取textarea字段的值:

    if (isset($_POST['line_number']))
    {
        $line_nr = $_POST['line_number'];
        $update = $_POST['record'];
        $q15 = "update reports_1 set content='$update' where line_number=$line_nr";
        $edit = $connection2->query($q15);
        if (!$edit) die ("Database access failed: " . $connection2->error);
    }

这就是它的全部…

尝试删除单引号。使用24而不是“24”。只是一个猜测,因为它们的类型(整数和字符串)行数是主要的,并且存在两次?没有行数不是两次。是24和25@goudelalfy。您确定在php代码上插入后没有完成吗?你能在if的决赛上放一个出口(0)吗,只是为了确保之后没有人发生?另外,您是否已经尝试使用该查询
$q15=“更新报告”set content='works fine'where line_number='24'吗?或者您只使用该变量注入进行了测试?如果您的查询方法执行mysqli\u multi\u查询,那么在没有触发器的情况下,我可以看到这将执行插入操作的唯一方法是使用SQL注入。我同意@anolsi-使用exit终止脚本并查看已更新/插入的内容(尽管如果在更新之前有插入,则不会识别问题)。