Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Незнаю как внести изменения сразу в несколько строк MySql

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: torxxx   (27.09.2011 в 17:30)   письмо автору
 
   для: Lotanaen   (27.09.2011 в 09:27)
 

спасибо учту

  Ответить  
 
 автор: Lotanaen   (27.09.2011 в 09:27)   письмо автору
 
   для: torxxx   (26.09.2011 в 18:11)
 

зарезервированые слова можно использовать в названиях таблиц и их полей, но лучше всегда при формировании запросов все имена эти брать в апостроф(обратные кавычки) - не ' , а `:

$resultADD = mysql_query ( "UPDATE `items` SET 
                                           `title`='$arrtitle[title]',
                                            `set`='$arrtitle[set]',
                                            WHERE `id`='$arrid'", $db);

  Ответить  
 
 автор: torxxx   (26.09.2011 в 18:11)   письмо автору
 
   для: Lotanaen   (26.09.2011 в 17:48)
 

Если правильно понял, нужно сделать так:


    foreach ($_POST['items'] as $arrid => $arrtitle) 
        {
                $resultADD = mysql_query ( "UPDATE items SET 
                                            'title'=$arrtitle[title],
                                            'Scout'=$arrtitle[Scout],
                                            'Soldier'=$arrtitle[Soldier],
                                            'Pyro'=$arrtitle[Pyro],
                                            'Demoman'=$arrtitle[Demoman],
                                            'Heavy'=$arrtitle[Heavy],
                                            'Engineer'=$arrtitle[Engineer],
                                            'Medic'=$arrtitle[Medic],
                                            'Sniper'=$arrtitle[Sniper],
                                            'Spy'=$arrtitle[Spy],
                                            'the_weapons'=$arrtitle[the_weapons],
                                            'the_hat'=$arrtitle[the_hat],
                                            'the_other'=$arrtitle[the_other],
                                            'set'=$arrtitle[set],
                                            'Slot'=$arrtitle[Slot],
                                            'counter'=$arrtitle[counter]
                                            WHERE 'id'='$arrid'", $db);
                
                if ($resultADD) {echo "<br>Новые параметры внесены в базу данных<br><br>";} else {echo "<br>Ошибка запроса - параметры не внесены<br><br>";}    
        }


Ясно как сказано выше я допустил 1 ошубку (фатальную):

1) нельзя использовать зарезервированные переменные в названия таблиц (в моем случаи set)

2) нельзя так-же делать так:


'title'='$arrtitle[title]' - неправильно
title='$arrtitle[title]' - правильно



                $resultADD = mysql_query ( "UPDATE items SET 
                                            title='$arrtitle[title]',
                                            set='$arrtitle[set]',
                                            WHERE id='$arrid'", $db);

  Ответить  
 
 автор: Lotanaen   (26.09.2011 в 17:48)   письмо автору
 
   для: torxxx   (26.09.2011 в 17:42)
 

да... вы второй foreach зачем делаете?

там получится такой же запрос:


$resultADD = mysql_query ( "UPDATE items SET 
                                            title='$arrtitle[title]'
                                            WHERE id='$arrid'", $db);

т.е. так с массивом поступите

  Ответить  
 
 автор: torxxx   (26.09.2011 в 17:42)   письмо автору
 
   для: Lotanaen   (26.09.2011 в 17:20)
 

спасибо за найденную ошибку, поправил.

Но данные все равно не заносятся

  Ответить  
 
 автор: Lotanaen   (26.09.2011 в 17:20)   письмо автору
 
   для: torxxx   (26.09.2011 в 16:58)
 

поля таблицы возьмите в кавычки: `set` либо не называйте таблицы и ее поля зарезервированными в mysql словами.

  Ответить  
 
 автор: torxxx   (26.09.2011 в 16:58)   письмо автору
134 Кб
 
   для: torxxx   (26.09.2011 в 11:29)
 

Появилась еще одна задача (непонятная для меня)

Есть массив (упростил до 2-ух "веток", на самом деле число меняется):



$_POST['items']  =>

Array
(
    [1] => Array
        (
            [title] => Неумолимая сила
            [Scout] => 1
            [Soldier] => 0
            [Pyro] => 0
            [Demoman] => 0
            [Heavy] => 0
            [Engineer] => 0
            [Medic] => 0
            [Sniper] => 0
            [Spy] => 0
            [the_weapons] => 0
            [the_hat] => 0
            [the_other] => 0
            [set] => нет
        )

    [40] => Array
        (
            [title] => Томислав
            [Scout] => 0
            [Soldier] => 0
            [Pyro] => 0
            [Demoman] => 0
            [Heavy] => 1
            [Engineer] => 0
            [Medic] => 0
            [Sniper] => 0
            [Spy] => 0
            [the_weapons] => 0
            [the_hat] => 0
            [the_other] => 0
            [set] => есть
        )

)


Обработал его комантой Foreach и вставил функцию обновления строк таблицы - но получилась "Борода" какая-то (не работает). Не обновляются поля строки таблицы (сделал проверку - которая подтверждает что я сделал неправильно запрос):


    foreach ($_POST['items'] as $arrid => $arrtitle) 
        {
            foreach ($arrtitle as $value => $key)
                {
                $resultADD = mysql_query ( "UPDATE items SET 
                                            title='$key',
                                            Scout='$key',
                                            Soldier='$key',
                                            Pyro='$key',
                                            Demoman='$key',
                                            Heavy='$key',
                                            Engineer='$key',
                                            Medic='$key',
                                            Sniper='$key',
                                            Spy='$key',
                                            the_weapons='$key',
                                            the_hat='$key',
                                            the_other='$key',
                                            set='$key',
                                            Slot='$key',
                                            counter='$key',
                                            WHERE id='$arrid'", $db);
                }
                if ($resultADD) {echo "<br>Новые параметры внесены в базу данных<br><br>";} else {echo "<br>Ошибка запроса - параметры не внесены<br><br>";}    
        }


Прикрепил скриншот таблицы для наглядности.

  Ответить  
 
 автор: torxxx   (26.09.2011 в 16:41)   письмо автору
 
   для: Valick   (26.09.2011 в 11:18)
 

Есть игра "http://wiki.teamfortress.com/wiki/Heavy/ru"/ В ней предусмотрен обмен предметами между игроками. У меня есть лишние игровые предметы и так-как я начал изучать php, решил написать движок сайта по обмену этими предметами.

  Ответить  
 
 автор: torxxx   (26.09.2011 в 11:31)   письмо автору
 
   для: Valick   (26.09.2011 в 11:24)
 

-

  Ответить  
 
 автор: torxxx   (26.09.2011 в 11:29)   письмо автору
 
   для: Valick   (26.09.2011 в 11:15)
 

Ага, то что надо (буду продумывать код дальше), не знал что так можно сделать, логика понятна.

Благодарю!

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования