Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странное поведение mysql_query(), Не могу понять, что такое :( 
V
    Опции темы
NFL
Дата 17.7.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Код

 $colors = array('black', 'white');
        if (!empty($_POST['color'])) {
            $color = $_POST['color'];
        }

        else
            $color = $colors[mt_rand(0, 1)];
        if ($color == 'white') {
            $white = $_SESSION['user_id'];
            $black = 0;
        }
        if ($color == 'black') {
            $black = $_SESSION['user_id'];
            $white = 0;
        }
        $cost = (int) $_POST['cost'];
        $time_start = date("Y-m-d H:i:s");
        $pawnWhiteFields = array('a2', 'b2', 'c2', 'd2', 'e2', 'f2', 'g2', 'h2');
        $pawnBlackFields = array('a7', 'b7', 'c7', 'd7', 'e7', 'f7', 'g7', 'h7');
        $rookWhiteFields = array('a1', 'h1');
        $rookBlackFields = array('a8', 'h8');
        $knightWhiteFields = array('b1', 'g1');
        $knightBlackFields = array('b8', 'g8');
        $bishopWhiteFields = array('c1', 'f1');
        $bishopBlackFields = array('c8', 'f8');
        mysql_query("INSERT INTO chess_games(white_player, black_player, time_start, cost) VALUES('$white', '$black', '$time_start', '$cost')");
        if (!mysql_error()) {
            $gameId = mysql_insert_id();
            $sql = '';
            $updated = date("Y-m-d H:i:s");
            for ($i = 0; $i < 8; $i++) {
                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'p', 'white', '$pawnWhiteFields[$i]', '$updated');";
                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'p', 'black', '$pawnBlackFields[$i]', '$updated');";
                //header("Location: index.php?gameid=".mysql_insert_id());
            }
            for ($i = 0; $i < 2; $i++) {
                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'r', 'white', '$rookWhiteFields[$i]', '$updated');";
                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'r', 'black', '$rookBlackFields[$i]', '$updated');";

                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'k', 'white', '$knightWhiteFields[$i]', '$updated');";
                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'k', 'black', '$knightBlackFields[$i]', '$updated');";

                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'b', 'white', '$bishopWhiteFields[$i]', '$updated');";
                $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'b', 'black', '$bishopBlackFields[$i]', '$updated');";
            }
            $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'q', 'white', 'd1', '$updated');";
            $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'q', 'black', 'd8', '$updated');";

            $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'k', 'white', 'e1', '$updated');";
            $sql.= "INSERT INTO chess_positions(game_id, piece_type, piece_color, 
                piece_field, updated) VALUES ('$gameId', 'k', 'black', 'e8', '$updated');";


Есть такой вот кодик, который генерит SQL
При попытке mysql_query($sql) - вылетает ошибка синтаксиса SQL.
При попытке echo $sql; и скопировать это дело в phpmyadmin - все ок, все 32 строки вставляются в БД.

В чем может быть проблема?
(denwer3 windows)
PM MAIL   Вверх
DenNTRooT
Дата 17.7.2011, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.7.2011

Репутация: нет
Всего: 1



mysql_query не может выполнять множество запросов одновременно т. е. только один запрос за раз прийдеться вам все все разделять на отдельные запросы. (сам недавно столкнулся с данной проблемой :( ) Или как вариант можете использовать расширение mysqli там есть функция mysqli_multi_query которая может выполнить множество запросов за один раз  
PM MAIL   Вверх
NFL
Дата 17.7.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



DenNTRooT, в принципе, я уже так и сделал. просто 32 запроса мне как то не особо нравятся smile 
насчет mysqli - надо будет взглянуть)

оно использует обычный синтаксис SQL?
PM MAIL   Вверх
DenNTRooT
Дата 17.7.2011, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.7.2011

Репутация: нет
Всего: 1



Нет это объектно ориентированный вариант библиотеки mysql подробнее почитайте здесь mysqli Скажу одно сразу придется весь код запросов к бд включая соединения переделывать
PM MAIL   Вверх
NFL
Дата 17.7.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



DenNTRooT, об этом я в курсе smile 
Я имел в виду синтаксис самого SQL)
Насколько я понял, он такой же как и для обычных mysql-функций)
PM MAIL   Вверх
DenNTRooT
Дата 17.7.2011, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.7.2011

Репутация: нет
Всего: 1



Простите не понял вопроса smile 
Конечно сам SQL абсолютно такой же 
PM MAIL   Вверх
NFL
Дата 17.7.2011, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Кстати, в mysql я забыл о такой вещи как multilpe rows
INSERT INTO t1(f1, f2, f3) VALUES (v1, v2, v3), (v4, v5, v6), ...
 smile немножко пхп-скрипт поправить и вполне себе подходит под мою задачу

Это сообщение отредактировал(а) NFL - 17.7.2011, 22:25
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0806 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.