Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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更新多个MYSQL行_Php_Mysql - Fatal编程技术网

通过PHP更新多个MYSQL行

通过PHP更新多个MYSQL行,php,mysql,Php,Mysql,我对PHP相当陌生,我知道基本知识,但不知道如何在PHP中一次更新多行?形式与此类似: <form action="sortorder.php" id="sortorder"> <input style='width:20px;' type='text' name='photo' value='1'> <input style='width:20px;' type='text' name='sortorder' value='1'> <input s

我对PHP相当陌生,我知道基本知识,但不知道如何在PHP中一次更新多行?形式与此类似:

<form action="sortorder.php" id="sortorder">

<input style='width:20px;' type='text' name='photo' value='1'>
<input style='width:20px;' type='text' name='sortorder' value='1'>

<input style='width:20px;' type='text' name='photo' value='2'>
<input style='width:20px;' type='text' name='sortorder' value='2'>

<input style='width:20px;' type='text' name='photo' value='3'>       
<input style='width:20px;' type='text' name='sortorder' value='3'>

</form>

我需要将类似的代码应用到每个

UPDATE photos SET sortorder = <input> WHERE id = '1';
UPDATE photos SET sortorder = <input> WHERE id = '2';      
更新照片集sortorder=其中id='1';
更新照片集sortorder=其中id='2';
我只是不知道如何获取多个动态数据位并将其全部更新。有人能给我指出正确的方向吗?我意识到我需要把它们放到一个数组中,但我不知道怎么做


提前谢谢。

假设您有ID 1,2,3,4。 你可以这样做:

UPDATE photos SET sortorder = <yourvalue> WHERE id IN (1,2,3,4);
您应该注意的是,只有文本必须在
-数字必须写在没有!对于您的示例,我假设
id
是一个数字而不是一个文本-如果它确实是一个文本(或char/varchar),您需要编写
。。。在('1'、'2'、'3'、'4')中
。但我建议您在ID中使用整数

更新: 要获取输入的特定值,可以执行以下操作:

<input ... name='photo[]' value='1' />
<input ... name='sortorder[]' value='1' />
正如我所说的:我不确定你是否会用PHP写这篇文章,但我的想法是遍历数组并将这些值带入你的查询中。

根据你的查询

UPDATE photos SET sortorder = WHERE id = '1';
UPDATE photos SET sortorder = WHERE id = '2';
id列是varchar而不是int,而且您还没有指定在sortorder中存储什么

我给出的解决方案考虑了以下问题

UPDATE photos SET sortorder = '1' WHERE id = '1';
UPDATE photos SET sortorder = '2' WHERE id = '2';
在这种情况下,您应该进行如下查询:

UPDATE photos SET sortorder = id;
若sortorder是int,id是varchar,那个么查询应该是

UPDATE photos SET sortorder = CAST(id as unsigned);
如果您只想更新某些特定的值,那么应该是

UPDATE photos SET sortorder = CAST(id as unsigned) where id in ('1','2','3');

这是您想要使插入sql更有效的地方。但实际上,每次按id更新一行将缩短锁定时间并有助于提高并发能力。另一方面,无法在一个sql中按不同的条件更新不同的行。

您给出的示例不正确,请先尝试修复它。谢谢-我可以问一下(如果我听起来是新手),使用上面的表单,我将如何动态获取值?我是否需要方括号,例如sortorder[]将结果放入数组?
UPDATE photos SET sortorder = CAST(id as unsigned);
UPDATE photos SET sortorder = CAST(id as unsigned) where id in ('1','2','3');