通过PHP更新多个MYSQL行
我对PHP相当陌生,我知道基本知识,但不知道如何在PHP中一次更新多行?形式与此类似:通过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
<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');