问题如下:SQL的原始结构如下:
id ids date
1 1
2 2
3 3
4 4
5 5
如下是PHP语句,想将ids改成$arr里面的$arr = array('2','3','4','1','5');
用循环或者UPDATE CASE语句该怎么写呢?
id ids date
1 1
2 2
3 3
4 4
5 5
如下是PHP语句,想将ids改成$arr里面的$arr = array('2','3','4','1','5');
用循环或者UPDATE CASE语句该怎么写呢?
foreach ($arr as $_order => $_item) {
_query("UPDATE user SET sid = {$_order}+1 WHERE id = {$_item}");
}
我自己试了一下这个第一次可行,改成 $arr = array('2','3','4','1','5');但是反过来改就改不了,改成$arr = array('1','3','4','2','5');请帮忙看看..谢谢
mysql_query("UPDATE user SET sid = {$item} WHERE id = {$_order}");
(⊙v⊙) 什么是反过来改不了?
$id=$key+1;
$SQL="UPDATE Table SET ids='".$value."' WHERE id='".$id."'";
$Mysqli->query($SQL);
}
mysql _query("UPDATE user SET sid = $item WHERE id = {$order+1}");
}
$id = $order +1;
mysql _query("UPDATE user SET sid = $item WHERE id = $id");
}
首先,数组里面原来的数据为:
id sid
1 1
2 2将SID改变成数组里面的内容 $arr1 = array(2,1)中foreach ($arr1 as $_order => $_item) {
mysql_query("UPDATE user SET sid = {$_order}+1 WHERE id = {$_item}");
}用上面这个循环写入数据库,成功,数据库显示如下
id sid
1 2
2 1
但是再改回来呢?就是 $arr = array(1,2)呢? 你们看看能否成功? 我试了不行呢?
数据库显示依旧是下面的:
id sid
1 2
2 1
id ids date
1 1
2 2
3 3
4 4
5 5ids sid?
foreach ($arr as $order => $item) {
$id = $order +1;
mysql _query("UPDATE user SET sid = $item WHERE id = $id");
}
$arr = array(1,3,4,2,5);
foreach ($arr as $order => $item) {
$id = $order +1;
mysql _query("UPDATE user SET sid = $item WHERE id = $id");
} 改回来:
$arr = array(2,1,3,4,5);
foreach ($arr as $order => $item) {
$id = $order +1;
mysql _query("UPDATE user SET sid = $item WHERE id = $id");
} 改回来依旧改不回来?把你改不回来的代码贴出来看看。
我知道问题的所在了,为传过来的值的问题,但是依旧解决不了,你写的那段程式没有问题整个程式如下://$arr为从input框里提取出来的
$arr = $_POST['sid'];
foreach ($arr as $order => $item) {
$id = $order + 1;
mysql_query("UPDATE user SET sid = $item WHERE id = $id");
}$result = mysql_query("SELECT id, sid FROM user ORDER BY sid + 1");
<form action="post" action="">
<?php
$html = array();
while (!!$rows = mysql_fetch_array($result)) {
$html['id'] = $rows['id'];
$html['sid'] = $rows['sid'];
?>
<td><?php echo $html['id']?></td><td><input type="text" name="sid[]" maxlength="2" value="<?php echo $html['sid']?>"/></td>
<?php
}
?>
</form>
//上面循环出来的HTML结果为id sid (为INPUT框,可输入)
1 1
2 2
3 3
4 4
5 5
当更改sid里面的值如下:id sid
1 2
2 1
3 3
4 4
5 5程式可以从数据库中读出HTML是正确的:
id sid
1 2
2 1
3 3
4 4
5 5
但当我再次将数据改为如下:
id sid
1 1
2 2
3 3
4 4
5 5
HTML界面显示的还是:id sid
1 2
2 1
3 3
4 4
5 5
以上,不知道我有没有说清楚~~
所以也就无法更新成功前面那段代码改为:<?php
if(isset($_POST['id'])){
$arr = $_POST['sid'];
foreach ($arr as $order => $item) {
$id = $order + 1;
mysql_query("UPDATE user SET sid = $item WHERE id = $id");
}
}
$result = mysql_query("SELECT id, sid FROM user ORDER BY sid + 1");
值我接收到了。$arr = $_POST['sid'];
print_r($arr);都有值,不会是值没有传过来的原因,
if(isset($_POST['submit'])){
$arr = $_POST['sid'];
foreach ($arr as $order => $item) {
mysql_query("UPDATE `user` SET sid = $item WHERE id = $order");
}
}
$result = mysql_query("SELECT id, sid FROM `user` ORDER BY sid ASC");
?><form method="post" action="">
<table>
<?php
while ($rows = mysql_fetch_array($result)){
$id = $rows['id'];
$sid = $rows['sid'];
?><tr>
<td><?php echo $id;?></td>
<td><input type="text" name="sid[<?php echo $id;?>]" maxlength="2" value="<?php echo $sid;?>"/></td>
</tr>
<?php
}
?>
<tr><td><input type="submit" value="submit" name="submit"/></td></tr>
</table>
</form>