2013-12-14 127 views
0

全部:PHP Web服務sproc與sql查詢

我正在使用PHP和mySQL中的存儲過程創建Web服務。我遇到了一個問題,讓存儲過程CALL工作,而標準的INSERT INTO查詢很好。任何人都可以幫助我做錯了什麼?在PHP程序完美的作品,如果我取消使用INSERT查詢線路,並與存儲過程CALL ......註釋掉感謝

$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

錯字$語句=執行(); –

+0

感謝!它仍然不是在mySQL中創建用戶,修復後,但它是一個很好的抓住! – Rob

+0

$ this-> db-> commit();缺少http://www.php.net/manual/en/mysqli.commit.php –

回答

0

既然你已經自動提交設置爲false,你需要手動提交事務,並確保你的表引擎支持擺在首位交易(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

Okidoki,不是問題:)時間繼續尋找!除非你解決了你的問題 – Zarathuztra

+0

感謝您的幫助!我做了更改顯式提交後事務,但仍然沒有紀錄在數據庫。我現在正在進行伐木工作,所以我可以看到發生了什麼。我沒有看到任何錯誤,但這並不意味着我沒有收到任何錯誤!再次感謝... – Rob