mysqli prepare语句错误“mysql服务器已经消失”

zed5wv10  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我正在努力使跳转形式程序化为面向对象的样式,因此如果我的代码不整洁或有缺陷,请注意-在这里,我通过jquery将一些帖子传递给一个类,以便在用户选中复选框时更新记录:
这是数据库连接

  1. class db {
  2. private $host ;
  3. private $username;
  4. private $password;
  5. private $dbname;
  6. protected function conn()
  7. {
  8. $this->host = "localhost";
  9. $this->username = "root";
  10. $this->password = "";
  11. $this->dbname = "mytest";
  12. $db = new mysqli($this->host, $this->username, $this->password, $this->dbname);
  13. if($db->connect_errno > 0){
  14. die('Unable to connect to database [' . $db->connect_error . ']');
  15. }
  16. return $db;
  17. }
  18. }

这是更新类

  1. class updOrders extends db {
  2. public $pid;
  3. public $proc;
  4. public function __construct()
  5. {
  6. $this->pid = isset($_POST['pid']) ? $_POST['pid'] : 0;
  7. $this->proc = isset($_POST['proc']) ? $_POST['proc'] : 1;
  8. // $stmt = $this->conn()->query("UPDATE tblorderhdr SET completed = ".$this->proc." WHERE orderid = ".$this->pid);
  9. $stmt = $this->conn()->prepare("UPDATE tblorderhdr SET completed = ? WHERE orderid = ?");
  10. $stmt->bind_param('ii', $this->proc, $this->pid);
  11. $stmt->execute();
  12. if($stmt->error)
  13. {
  14. $err = $stmt->error ;
  15. } else {
  16. $err = 'ok';
  17. }
  18. /* close statement */
  19. $stmt->close();
  20. echo json_encode($err);
  21. }
  22. }
  23. $test = new updOrders;

当我注解掉prepare语句并直接运行查询(注解掉)时,它会更新,当我尝试将其作为prepare语句运行时,它会返回一个错误“mysql server has gone away”。
任何帮助都非常感谢我已经没有主意了!
ps:localhost上的apache/xampp

xqkwcwgp

xqkwcwgp1#

在对my.ini和php.ini进行了大量调整之后,都没有任何效果,问题似乎出在与数据库的连接上。以防其他人也有同样的问题,这里是(相关的位)更新的代码:

  1. $db = $this->conn();
  2. $stmt = $db->prepare("UPDATE tblorderhdr SET completed = ? WHERE orderid = ?");
  3. $stmt->bind_param('ii', $this->proc, $this->pid);
  4. $stmt->execute();

有人能告诉我为什么这个能用而以前的版本不行吗?

相关问题