2015-02-17 9 views
0

Я пытаюсь вставить данные в одну таблицу и выбрать идентификатор и вставить дополнительную информацию в другую таблицу, связанную с идентификатором, мой код ниже (я не совсем продвинутый, поэтому, пожалуйста, будьте терпеливы , Я ищу, чтобы решить это, не изучая что-то совершенно другое, если это возможно). Этот код работает до «INSERT INTO sb_admins_servers_groups», а затем останавливается.Несколько запросов MySQL в одном заявлении

$sql = 'INSERT INTO sb_admins (user, authid, password, gid, email, validate, extraflags, immunity, srv_group, srv_flags, srv_password, lastvisit) 
    VALUES (:name, :ID, "#######", "-1", "", "", "0", "0", "X Permissions", "", "", ""); 
    SELECT aid FROM sb_admins WHERE authid = :ID 
    INSERT INTO sb_admins_servers_groups (admin_id, group_id, srv_group_id, server_id) 
    VALUES (aid, "5", "4", "-1")'; 
    $s=$pdo->prepare($sql); 
    $s->bindvalue('name', $player->name); 

    $s->bindvalue('ID', $player->uniqueid); 

    $s->execute(); 
    } 
    catch(PDOException $e) 
    { 
    echo "There was an error " . $e->getMessage() . ""; 
    exit(); 
    } 
+0

Вы можете найти всю необходимую информацию в предыдущем вопросе здесь: http://stackoverflow.com/questions/6346674/pdo-support-for-multiple-queries-pdo-mysql-pdo-mysqlnd – icecub

+1

Вы отсутствует вторая двоеточие после второго запроса. –

+0

@icecub У меня будет прочитанное, что я могу найти – easono

ответ

0

Я думаю, что точка с запятой (";") отсутствует после строки SELECT aid FROM sb_admins WHERE authid = :ID. Он должен быть

+0

Я пробовал это и все еще ничего, я понял, что ':' после первого запроса кажется чтобы остановить второй, и, естественно, третий даже не обрабатывается, если я удалю эти 2, я получаю эту ошибку. «Ошибка SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с SELECT help FROM sb_admins WHERE authid = '123456' INSERT INTO sb_ 'в строке 3 – easono

0

Вам не хватает полуколонии после вашего второго запроса, но это не ваша единственная проблема.

Ваш SELECT выберет значение, но не сохранит его. Когда вы доберетесь до своего третьего запроса, для aid не будет значения, поэтому ваш запрос каким-то образом не сработает.

Вы можете комбинировать свои второй и третий запросы, чтобы избежать необходимости хранить промежуточный результат. Используйте INSERT...SELECT

INSERT INTO sb_admins_servers_groups (admin_id, group_id, srv_group_id, server_id) 
    SELECT aid, "5", "4", "-1" FROM sb_admins WHERE authid = :ID 

MySQL ссылка: http://dev.mysql.com/doc/refman/5.5/en/insert-select.html

Однако, я не думаю, что вы получите форму множественного запроса на работу с подготовленными операторами, если не включить эмуляцию PDO первый с

$s->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); 

Если честно, я думаю, вам нужно просто подготовить и выполнить два отдельных запроса.

+0

Я могу видеть, что, по вашему мнению, я думаю из этого, эмуляция PDO не то, что я пробовал сознательно. Я заберу их и посмотрю, что происходит, этот запрос выполняется из foreach, поэтому я не уверен, что его запускать, поскольку второй запрос будет на 100% точным, поскольку данные могут отличаться в следующем прогоне. У меня будет другая игра. спасибо – easono

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