PHP disabled_rows возвращает 0, но запрос выполняется - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть функция, в которой я выполняю обновление таблицы, после ее вызова я проверяю таблицу, и строка изменилась, но функции возвращают «Ошибка при обновлении» вместо «Доктор занят».Вот моя функция.

function funcion(){
    $con = new Conexion();
   $con->conecta();

   $sql = “SELECT * FROM llamada WHERE id_llamada = $id_llamada AND id_medico = $id_medico”;
   $res = $con->consulta($sql);
   if ($res->num_rows > 0) {
     $sql = “UPDATE medico SET disponible = 1 WHERE id_medico = $id_medico”;
     $con->consulta($sql);
     // var_dump($con->mysqli->affected_rows);
     if ($con->mysqli->affected_rows() > 0) {
       return [true,‘Doctor occupied’];
     }else{
       return [false,‘Error at update’,$con->mysqli];
     }
   }else{
     return [false,‘Data doesn't match’];
   }
}

Функция conecta () устанавливает связь с mysql.

Вот класс.

class Conexion {
    public $mysqli;

    public function conecta(){
        $this->mysqli = new mysqli(‘SERVER’, ‘USER’, ‘PASSWORD’, ‘DATABASE’);
        if ($this->mysqli->connect_errno) {
           echo “Fallo al conectar a MySQL: (” . $this->mysqli->connect_errno . “) ” . $this->mysqli->connect_error;
        }
        //echo $this->mysqli->host_info . “<br>“;
    }

    public function desconecta(){
        $this->mysqli->close();
    }

    public function consulta($sql) {
        $resultado = $this->mysqli->query($sql);
        if (!$resultado) {
            echo “Error en la consulta <br>“;
        }
        if (is_null($resultado)){
            echo “sin resultados”;
        }else{
            return $resultado;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

mySqli предлагает два интерфейса, один объектно-ориентированный, а другой процедурный.В объектно-ориентированном ключестроенная_граница действительно является свойством объекта mySqli.Однако, если вам удобнее использовать процедурное кодирование, то можно использовать функцию mysqli_affected_rows (), для которой требуется параметр $link (подробнее см. Здесь здесь ).

Пример процедурного варианта:

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
// code for a SELECT, INSERT, UPDATE, REPLACE, or DELETE query
printf("Affected rows: %d\n", mysqli_affected_rows($link) );

Примечание: вы также можете найти хороший учебник по процедурному стилю здесь .

0 голосов
/ 03 декабря 2018

Предполагая, что $con->mysqli является дескриптором соединения, affected_rows является свойством, а не методом.Итак, ваша строка ...

if ($con->mysqli->affected_rows() > 0) {

должна быть

if ($con->mysqli->affected_rows > 0) {

Вот как вы ее используете в ...

// var_dump($con->mysqli->affected_rows);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...