【问题标题】:mysqli update does not updatemysqli更新不更新
【发布时间】:2018-02-13 10:37:51
【问题描述】:

我刚刚将一些旧代码从 mysql 转换为 mysqli。我连接到数据库并读取 AgentNumber 的值,然后该号码将获得分配给的某个电子邮件地址。这一切都很好,电子邮件被发送到不同的电子邮件地址。但是,我想在提交表单后更新数据库,但我无法让更新功能正常工作。 首先是我的数据库的截图: screenshot of database

这里是连接成功后的代码sn-ps: // 将数据库中的表名放入变量中。 $agents = "代理";

    // The query against the database.
    $extractID = "SELECT * FROM $agents";

    // Create a query against the database as a variable as with variables for connection ($mysqli) and for query ($extractID)
    $result = mysqli_query($mysqli, $extractID);

    // Check which number is currently in the database as AgentNumber and use that number to assign the email address
    while($row = mysqli_fetch_assoc($result))
    {
        $agent_number = $row['AgentNumber'];
        // echo $agent_number  ."<br>";
        if ($agent_number == '00056') { 
            $agent_number++; // to 00057
            $insertNew = mysqli_query("UPDATE $agents SET AgentNumber=$agent_number WHERE AgentID=1");
        } elseif ($agent_number == '00057') {
            $agent_number++; // to 00058
            $insertNew = mysqli_query("UPDATE $agents SET AgentNumber=$agent_number WHERE AgentID=1");
        } else {
            $agent_number--;
            $agent_number--; // back to 00056
            $insertNew = mysqli_query("UPDATE $agents SET AgentNumber=$agent_number WHERE AgentID=1");
        }   
    }

我只是无法更改数字,我尝试了很多我在这里找到的陈述。 非常感谢任何帮助。

奥蒂

【问题讨论】:

  • 在$agent_number++ 之后$agent_number 的值是多少?真的吗? mysqli 更新与这个事实有什么关系?
  • 对不起,如果我错过了一些基本的东西。它在我的旧代码中以这种方式工作,但是我有一个不同的检查: if ($agent_number % 2 == 0) { $agent_number++;...
  • 仅供参考:你永远不会从数学表达式中得到像 00056 这样的东西,包括 ++。它将是实心的 57,没有任何零
  • 非常感谢您指出这一点。我在那个代码上看了太久,没有看到我的错误。

标签: php forms mysqli


【解决方案1】:

我忽略了我的号码没有前导零,我还需要再次将连接添加到我的更新查询中。 这是我的工作代码sn-p: // 对数据库的查询。 $extractID = "SELECT * FROM $agents";

    // Create a query against the database as a variable as with variables for connection ($mysqli) and for query ($extractID)
    $result = mysqli_query($mysqli, $extractID);

    // Check which number is currently in the database as AgentNumber and use that number to assign the email address
    while($row = mysqli_fetch_assoc($result))
    {
        $agent_number = $row['AgentNumber'];
        $agent_id = 00001;
        // echo $agent_number  ."<br>";
        if ($agent_number == '00056') { 
            $agent_number = '00057'; // to 00057 - not really necessary to set here as usesd as number in update query
            // echo $agent_number  ."<br>";
            $insertNew = mysqli_query($mysqli, 'UPDATE `agents` SET `AgentNumber` = "00057" WHERE `AgentID`="00001"');
        } elseif ($agent_number == '00057') {
            $agent_number = '00058'; // to 00058 - not really necessary to set here as usesd as number in update query
            $insertNew = mysqli_query($mysqli, 'UPDATE `agents` SET `AgentNumber` = "00058" WHERE `AgentID`="00001"');
        } else {
            $agent_number = '00056'; // to 00056 - not really necessary to set here as usesd as number in update query
            $insertNew = mysqli_query($mysqli, 'UPDATE `agents` SET `AgentNumber` = "00056" WHERE `AgentID`="00001"');
        }   
    }

【讨论】:

    【解决方案2】:

    您的 WHERE 子句可能永远不会命中正确的记录,因为代码尝试设置 WHERE AgentId =1,同时它们在数据库中的 ID 类似于“0001”。

    这应该可行:

    while($row = mysqli_fetch_assoc($result))
    {
        $agent_number = $row['AgentNumber'];
        $agent_id = $row['AgentID'];
        // echo $agent_number  ."<br>";
        if ($agent_number == '00056') { 
            $agent_number++; // to 00057
            $insertNew = mysqli_query($conn, "UPDATE $agents SET AgentNumber=$agent_number WHERE AgentID=$agent_id");
    

    (为清楚起见省略了其余代码)

    【讨论】:

    • 还有其他想法吗?谢谢 Athene,但还是没有运气。我之前用 00001 尝试过。
    • 通常不适用于mysqli,但我想您还应该提供连接句柄以进行查询,请参阅我编辑的答案...
    • 添加句柄后,表单不再提交。所以,这似乎是不对的。此外,我还没有看到任何其他示例代码。
    • 我的数字和前导零错误,并将连接再次添加到更新查询中解决了我的问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多