所有
我正在使用PHP和mySQL中的存储过程创建一个Web服务。我在使用sproc CALL时遇到问题,而标准的INSERT INTO查询运行良好。谁能帮助我做错了什么?如果我使用INSERT查询取消注释该行并使用sproc CALL注释掉该行,则PHP例程可以正常工作...谢谢
$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)
由于您已将autocommit设置为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