2013-05-03 54 views
0

我试图一次更新11行 - 板球队(11名球员)从表单页面发布之前,然后我想更新与这些球员调用的第一个表。 (该表包括玩家,订单和团队。)sql在php中更新多行大小写

<?php 
session_start(); 

// Edit this to connect to your database with your username and password 
$db_name="a1467234_cricket"; // Database name 
$tbl_name="statistics"; // Table name 

// Connect to server and select databse. 
$conn = mysql_connect("mysql17.000webhost.com","*******","*******") or die(mysql_error()); 
mysql_select_db("$db_name")or die("cannot select DB"); 


$one = $_POST["one"]; 
$two = $_POST["two"]; 
$three = $_POST["three"]; 
$four = $_POST["four"]; 
$five = $_POST["five"]; 
$six = $_POST["six"]; 
$seven = $_POST["seven"]; 
$eight = $_POST["eight"]; 
$nine = $_POST["nine"]; 
$ten = $_POST["ten"]; 
$eleven = $_POST["eleven"]; 

$team = $_POST["team"]; 

$sql = "UPDATE first 
    SET player = (CASE 
     WHEN order = 1 ='$team' THEN '$one' 
     WHEN order = 2 AND team ='$team' THEN '$two' 
     WHEN order = 3 AND team ='$team' THEN '$three' 
     WHEN order = 4 AND team ='$team' THEN '$four' 
     WHEN order = 5 AND team ='$team' THEN '$five' 
     WHEN order = 6 AND team ='$team' THEN '$six' 
     WHEN order = 7 AND team ='$team' THEN '$seven' 
     WHEN order = 8 AND team ='$team' THEN '$eight' 
     WHEN order = 9 AND team ='$team' THEN '$nine' 
     WHEN order = 10 AND team ='$team' THEN '$ten' 
     WHEN order = 11 AND team ='$team' THEN '$eleven' 
     ELSE player 
    END 
    WHERE order IN (1,2,3,4,5,6,7,8,9,10,11))"; 

echo "Updated team selection"; 

mysql_close($conn); 

?> 

有没有人知道如何获取更新脚本的工作请?没有错误显示,它只是不会更改数据库。

+0

您应该删除证书...此外,您有一个结束语句,但没有开始语句。我不是SQL大师,但我认为它是必需的。 – Chad 2013-05-03 15:46:31

+0

第一个WHEN语句是否有语法错误? WHEN order = 1 ='$ team'THEN'$ one' – tylert 2013-05-03 15:48:40

+0

oh对不起,我只是改变了,没有像其他人一样获得团队是$团队 – user2258954 2013-05-03 15:50:08

回答

0

使用for循环可能会更容易,更整洁,更智能地进行查询。这可能对您没有多大帮助:

<?php 
for($i=1;$i<$count;$i++) { 
     $updatesql="update first set player ='".$_POST['player_'.$i]"' where team ='".$_POST['team_'.$i]"' "; 
     mysql_query($updatesql); 

} 
?> 

您可能需要对此进行微小的修改。

例如。你需要以这种方式来发布数据:

PLAYER_1,player_2等,以及球队在TEAM_1,TEAM_2等

1

你需要一个mysql_query($sql);到数据库

0

bviously上执行查询,你缺少结束后的右括号')'。 顺便说一下,第一个案例条件(order = 1 ='$ team')似乎没有任何意义。

无论如何,下面的查询应该工作。请注意。 。 。将需要以与第一和第二参与者相同的模式进行填充。

$sql = " 
     UPDATE first a, 
       (
       SELECT 1 AS `order`, '{$one}' AS player, '{$team}' AS team 
       UNION ALL 
       SELECT 2 AS `order`, '{$two}' AS player, '{$team}' AS team 
       . 
       . 
       . 
       UNION ALL 
       SELECT 11 AS `order`, '{$eleven}' AS player, '{$team}' AS team 
      ) b 
      SET a.player = b.player 
     WHERE a.`order` = b.`order` 
      AND a.team = b.teamenter 
     "; 
+0

对不起,我意外地改变了,当它上传与其他人一样,我把它放在哪里是错的?谢谢 – user2258954 2013-05-03 16:05:09