更新表中所有行中的一列

Posted

技术标签:

【中文标题】更新表中所有行中的一列【英文标题】:Updating one column in all rows in a table 【发布时间】:2013-04-10 13:53:58 【问题描述】:

我想在一个表的所有行中更新一个相同的列,有人可以帮我如何更新表吗?只有一个输入字段应该更新所有行的值。此代码不起作用,我知道索引和数组有问题。

<?php
    <form method="post" dir="rtl" name="maxcharfield" >                     
        <textarea onKeyDown="textCounter(this,'progressbar1',300)" 
          onKeyUp="textCounter(this,'progressbar1',300)" 
          onFocus="textCounter(this,'progressbar1',300)"  
            style="font-family:'B_yekan';" id="text" name="text" rows="0" cols="0" class="required"></textarea>
        <div class="cleaner h10"></div> 

        <div style="font-family:'B_yekan';" dir="rtl" id="progressbar1" class="progress" ></div>
        <script>textCounter(document.getElementById("maxcharfield"),"progressbar1",100)</script>    

        <input class="styled-button-8" style="margin-top:10px; float:right; margin-right:50px; font-size: 14px;  padding: 5px 14px;" type="submit" value="save" name="Submit"   />
        <input style="font-family:'B_yekan';" type="reset" value="reset" id="reset" name="reset" class="submit_btn float_l" />

    </form>

<?php
// for updating Check if button name "Submit" is active, do this 
if(isset($_POST['Submit']) && $_POST['Submit'] == 'save')
    
        $sql1="UPDATE `".$tbl_name."` SET `board`='".$_REQUEST['text']."'  ";
                            $result1=mysql_query($sql1);
     

       
?>

【问题讨论】:

【参考方案1】:

上面给出了Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. 错误。

用于更新单列下行中所有值的一个查询。

UPDATE TableName SET `board`='value' WHERE `id` > 1;

只需附加一个WHERE 子句,现在如果它在任何CMS 中,您将得到这个id 的变体,它可能是entity_idpost_id

【讨论】:

【参考方案2】:

您的解决方案过于复杂。为了更新每条记录,您尝试采用的方法是:

    选择所有记录。 获取每条记录的 ID。 遍历 ID。 按该 ID 更新每条记录。

UPDATE 语法有一个更简单的方法来做到这一点。您不需要为UPDATE 语句提供WHERE 子句。如果没有该子句,它将默认更新表中的每条记录:

UPDATE TableName SET `board`='value'

另外,请注意您的代码中存在SQL injection 漏洞。通过使用 $_REQUEST['text'] 直接在您的 SQL 查询中,您允许任何用户向您的查询发送 SQL 代码。然后,您的代码将执行他们发送给您的任何内容。这可能会让他们破坏或删除您的数据,甚至获得对您服务器的管理访问权限。

对于初学者,请停止使用mysql_* 函数。 PHP 已弃用这些,不应再使用它们。他们有a mysqli_ replacement。除此之外,在 SQL 查询中使用输入之前,请使用 the mysqli_real_escape_string() function 清理输入。最后,使用 prepared statements 而不是直接将值连接到 SQL 字符串中。

【讨论】:

@mohamad:你能用新代码更新原来的问题吗?很多事情都可能是错误的。 实际上,您在此代码中提到的注入部分并不重要,这是一个测试代码。郑重声明,我不是 php 专业人士,所以我需要一些专业人士的帮助 @mohamad:执行是否到达 SQL 调用?也就是说,mysql_query($sql1) 真的被执行了吗?如果是这样,当这种情况发生时,$sql1 的运行时值是多少?如果您采用该运行时值并针对您的数据库手动执行它,会发生什么? 我已经解决了提交问题。由于未知原因它不起作用我将提交更新代码更改为上述代码并且它正在工作。 @David 嘿大卫,有没有办法,对于列中的每一行将其作为 python 函数的参数发送,并使用返回值,更新不同的列?

以上是关于更新表中所有行中的一列的主要内容,如果未能解决你的问题,请参考以下文章

oracle中列中的数据求和

使用同一列中的值更新表中的唯一列

我需要使用索引和匹配从另一列中的条件匹配的一列中提取数据

每次在 MATLAB 中运行代码时,如何更新下一列中我的 Excel 工作表中的计算数据?

从不同表的另一列中的一列中查找所有值

将数据复制到同一张表和从同一表复制数据,并将复制数据的一列中的值更改为指定值