mysqli подготовить ошибку утверждения "сервер MySQL ушел" - PullRequest
0 голосов
/ 11 октября 2018

Я изо всех сил пытаюсь сделать форму перехода процедурным к объектно-ориентированному стилю, поэтому, если мой код неопрятен или имеет недостатки, пожалуйста, будьте любезны - здесь я передаю пару сообщений через jQuery классу, чтобы обновить запись, когда пользовательустанавливает флажок:

Вот соединение с базой данных

class db {

    private $host ;      
    private $username;
    private $password;
    private $dbname;

    protected function conn()
    {
        $this->host = "localhost";
        $this->username = "root";
        $this->password = "";
        $this->dbname = "mytest";

        $db = new mysqli($this->host, $this->username,  $this->password, $this->dbname);

        if($db->connect_errno > 0){
                die('Unable to connect to database [' . $db->connect_error . ']');
        }

        return $db;

    }

}

Вот класс обновления

class updOrders extends db {

public $pid;
public $proc;

public function __construct()
{
$this->pid = isset($_POST['pid']) ? $_POST['pid'] : 0;
$this->proc = isset($_POST['proc']) ? $_POST['proc'] : 1;

// $stmt = $this->conn()->query("UPDATE tblorderhdr SET completed = ".$this->proc." WHERE orderid = ".$this->pid);

$stmt = $this->conn()->prepare("UPDATE tblorderhdr SET completed = ? WHERE orderid = ?");
$stmt->bind_param('ii', $this->proc, $this->pid);

 $stmt->execute();

if($stmt->error)
    {
        $err = $stmt->error ;
    } else {
        $err = 'ok';
    }

/* close statement */
$stmt->close();

 echo json_encode($err);   

}

}

$test = new  updOrders;

Когда я закомментирую оператор подготовки и выполню запрос напрямую(закомментировано) он обновляется, когда я пытаюсь выполнить его как оператор подготовки, он возвращает ошибку «Сервер MySQL ушел».

Любая помощь очень ценится, у меня закончились идеи!

PS: Apache / XAMPP на локальном хосте

1 Ответ

0 голосов
/ 12 октября 2018

После долгих изменений с my.ini и php.ini все безрезультатно может показаться, что проблема заключается в подключении к базе данных.На тот случай, если у кого-то еще есть такая же проблема, обновленный код (соответствующий бит):

$db = $this->conn();

$stmt = $db->prepare("UPDATE tblorderhdr SET completed = ? WHERE orderid = ?");
$stmt->bind_param('ii', $this->proc, $this->pid);

$stmt->execute();

Может кто-нибудь сказать мне, почему это работает, а предыдущая версия не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...