Uma instrução preparada pode executar apenas uma consulta MySQL. Você pode preparar quantas declarações quiser em diferentes variáveis:
$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)");
$stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");
E, em seguida, executá-los mais tarde. Se você quiser garantir que nenhum deles seja executado, a menos que ambos possam ser executados, você precisa analisar as transações, como disse Thomas.
Além disso, uma dica geral:"call to member function on a non-object" é o erro padrão que você obtém quando
prepare()
falha e então $stmt
não é realmente um objeto de instrução preparado. Geralmente significa que você precisa procurar um erro em seu prepare()
declaração em vez de qualquer coisa mais tarde.