我想在一个表的所有行中更新一个相同的列,有人可以帮我一个更新表吗?只有一个输入字段应该更新所有行值。这段代码不起作用,我知道索引和数组有问题。
<?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);
}
}
?>
答案 0 :(得分:52)
你的解决方案过于复杂。为了更新每条记录,您尝试采用的方法是:
UPDATE
语法有一种更简单的方法。您不需要为WHERE
语句提供UPDATE
子句。如果没有该子句,它将默认更新表中的每条记录:
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字符串中。
答案 1 :(得分:0)
上面给出了 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_id
或 post_id
。