Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/SQL-如何更新数据库字段_Php_Mysql_Sql Server_Database - Fatal编程技术网

PHP/SQL-如何更新数据库字段

PHP/SQL-如何更新数据库字段,php,mysql,sql-server,database,Php,Mysql,Sql Server,Database,所以我在我的网站上有一个客户表,上面有几个列,比如姓名、年龄等等。。。我添加了一个新的列,是“删除”,我添加了复选框,还有一个按钮,我想做的是,如果我选择一个或多个复选框,然后点击按钮删除,我希望将其从网站上删除,但在数据库上,我希望将字段从0更新为1,而0表示客户端同时存在于网站和数据库上,1表示客户端不再存在于网站上,但仍存在于数据库上 我是编程领域的新手,但这是我迄今为止得到的代码: $id = $_POST['id']; if(isset($_POST['option']) == 'c

所以我在我的网站上有一个客户表,上面有几个列,比如姓名、年龄等等。。。我添加了一个新的列,是“删除”,我添加了复选框,还有一个按钮,我想做的是,如果我选择一个或多个复选框,然后点击按钮删除,我希望将其从网站上删除,但在数据库上,我希望将字段从0更新为1,而0表示客户端同时存在于网站和数据库上,1表示客户端不再存在于网站上,但仍存在于数据库上

我是编程领域的新手,但这是我迄今为止得到的代码:

$id = $_POST['id'];

if(isset($_POST['option']) == 'check' && ($_POST['button']) == 'submit') {

$query = "UPDATE commande

SET traiter = 1

WHERE id = '%$id%'";

var_dump($query);

}
现在这不起作用,他没有正确地进行更新,我选中复选框,然后单击按钮,它不会从网站上删除,也不会根据其id从正确的客户端更新特定于数据库的字段,我不知道为什么


有人能帮我吗?

如果您使用
=
删除
%

$query = "UPDATE commande SET traiter = 1 WHERE id = '$id'";
$query = "UPDATE commande SET traiter = 1 WHERE id = '$id'";
或者将
类似于
%

$query = "UPDATE commande SET traiter= 1 WHERE id LIKE '%$id%'";

删除的多选复选框

考虑到
$id
是一个数组,您可以在
子句中使用
替换许多OR条件

您可以在where条件中使用
in
子句,如

$query = "UPDATE commande SET traiter = 1 WHERE id IN ($id)";

更新

您应该像这样将其视为一个数组

 <input name="id[]" type="checkbox" value="1">
 <input name="id[]" type="checkbox" value="2">
 <input name="id[]" type="checkbox" value="3">
 <input name="id[]" type="checkbox" value="4">


只有这样,才能将其作为数组。因此,
$\u POST['id']
将提供所选复选框的数组。

您可以通过两种方式使用它:

1-如果有多个id出现,则:

$query = "UPDATE commande SET traiter = 1 WHERE id IN ($id)";
2-如果一次只更新一个id,则:


在一个简单的比较中,您使用的是类似于
的语法。删除
后的百分号,其中
。另外:强制引用。你似乎没有执行查询?你是对的@Epodax,这就是问题所在,我不明白为什么它不能正常工作使用带有$id的“like”没有意义真的,没有注意到地雷,已经纠正了那个小细节,但仍然不起作用,我正在使用var_dump调试它,当我执行我想要执行的操作时,我从var_dump:string(56)“UPDATE commande SET traiter=1,其中id像“%”在UPDATE commande SET traiter=1上运行此查询,其中id=“$id”MySQL并检查是否正常工作@lefuture但通常我们使用id作为主键。我不认为id会像'abc001'一样,首先检查变量$id=$\u POST['id'];是否包含值。。调试您的脚本。。。解决方案是,$id不是数组,我只是创建了一个名为$id=$\u POST['id']的php变量;要说$id等于数据库字段'id',有许多复选框,对吗?保持每个复选框名称相同,并发布数据。然后你会得到一个数组,所有的复选框都有相同的名字,我已经讲过了,这里的问题与queryDude直接相关,你在查询中的多个条件可以像我在回答中所说的那样完成。对于每个复选框,复选框名称应类似于此id[]。所以,$\u POST['id']将提供所选复选框的数组。所以基本上你是说,在复选框中,我将name=“id[]”放进去,是吗?
after you get id/s of delete record 

    $query = "UPDATE commande SET traiter = 0 WHERE id IN ($id)";//For multiple multiple



    $$query = "UPDATE commande SET traiter = 0 WHERE id = '$id'";//for single record
 Set traiter to '0' means deleted record and '1' for active record