2013-12-14 2 views
0

Все:PHP web service sproc vs sql query

Я создаю веб-сервис с использованием PHP и хранимой процедуры в mySQL. У меня возникла проблема с запуском sproc CALL, в то время как стандартный запрос INSERT INTO работает хорошо. Может ли кто-нибудь помочь с тем, что я делаю неправильно? Процедура PHP работает отлично, если я раскомментировать строку с запросом INSERT и закомментируйте строку с sproc ЗВОНИТЕ ... спасибо

$stmt = $this->db->prepare("call Game.addUser(?,?,?,?)"); 
//$stmt = $this->db->prepare('INSERT INTO Game.activeUsers (playerName, email, zip,  `password`) VALUES(?,?,?,?);'); 
$stmt->bind_param("ssss", $playerName, $email, $zip, $pw); 
$stmt->execute(); 

Спасибо!

+0

опечатку здесь $ STMT = Execute(); –

+0

СПАСИБО! Он по-прежнему не создает пользователя в mySQL, после исправления этого, но это был хороший улов! – Rob

+0

$ this-> db-> commit(); отсутствует http://www.php.net/manual/en/mysqli.commit.php –

ответ

0

Поскольку вы Autocommit значение ЛОЖЬ, вам необходимо вручную зафиксировать ваши сделки, и обеспечить ваш стол двигателя поддерживает транзакции в первую очередь (InnoDB)

// Create new user 
$stmt = $this->db->prepare("call Game.addUser(?,?,?,?);"); 
$stmt->bind_param("ssss", $playerName, $email, $zip, $password); 
$stmt = execute(); 
$stmt->bind_result($verbose); 
$stmt->close(); 

Если, вероятно, больше похожи на

// Create new user 

$stmt = $this->db->prepare("call Game.addUser(?,?,?,?);"); 
$stmt->bind_param("ssss", $playerName, $email, $zip, $password); 
$stmt->execute(); 
$stmt->bind_result($verbose); 
$this->db->commit();//change here 
$stmt->close(); 

ПРИМЕЧАНИЕ. Я не проверял ошибки для вас, поэтому вам нужно будет ввести некоторые из них. Склонен выглядеть при работе с транзакциями:

if(!$this->db->commit()){ 
    $this->db->rollback(); 
} 

Что касается лесозаготовок, то я бы рекомендовал начать here

+0

Спасибо. Я должен был упомянуть, что я просто заменил эти строки, чтобы скрыть фактические значения. Предположим, что эти строки заполнены соответствующими значениями, которые работают. Я уверен, что произведение работает. Извините за путаницу и спасибо, что посмотрели на это. – Rob

+0

Окидоки, не проблема :) Время держать! Если вы не решили свою проблему – Zarathuztra

+0

Спасибо за помощь! Я сделал изменение для явного фиксации после транзакции, но все еще нет записи в db. Сейчас я работаю над протоколированием, чтобы я мог видеть, что происходит. Я не вижу никаких ошибок, но это не значит, что я не получаю! Еще раз спасибо ... – Rob