2013-05-03 3 views
0

Я пытаюсь обновить 11 строк за один раз - команда крикета (11 игроков) отправлена ​​с страницы формы раньше, а затем я хочу обновить первую таблицу, названную этими игроками. (В таблице указаны игроки, заказ и команда.)sql update несколько строк с флагом в 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

Возможно, вы должны удалить учетные данные ... Кроме того, у вас есть конечный оператор, но нет инструкции begin. Я не гуру SQL, но я думаю, что это необходимо. – Chad

+0

Имеет ли первая инструкция WHEN синтаксическая ошибка? КОГДА order = 1 = '$ team' THEN '$ one' – tylert

+0

О, извините, я просто изменил, что нет, это то же самое, что и другие, получающие команду: команда $ – user2258954

ответ

0

Использование для цикла может быть проще, аккуратно и разумнее для вашего запроса. Это может быть немного полезно для вас:

<?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, вам не хватает закрывающая скобка ')' после окончания END. Кстати, условие первого случая (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

Смежные вопросы