Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP受影响的_行返回0,但执行查询_Php_Mysql_Sql_Oop - Fatal编程技术网

PHP受影响的_行返回0,但执行查询

PHP受影响的_行返回0,但执行查询,php,mysql,sql,oop,Php,Mysql,Sql,Oop,我有一个函数,其中我对一个表进行更新,在调用它之后,我检查表,并且行已经更改,但是函数在更新时返回错误,而不是错误。这是我的功能 function funcion(){ $con = new Conexion(); $con->conecta(); $sql = “SELECT * FROM llamada WHERE id_llamada = $id_llamada AND id_medico = $id_medico”; $res = $con->co

我有一个函数,其中我对一个表进行更新,在调用它之后,我检查表,并且行已经更改,但是函数在更新时返回错误,而不是错误。这是我的功能

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;
        }
    }
}
假设$con->mysqli是连接句柄,受影响的_行是一个属性而不是一个方法。所以你的台词

if ($con->mysqli->affected_rows() > 0) {
应该是

if ($con->mysqli->affected_rows > 0) {
这就是你在

// var_dump($con->mysqli->affected_rows);

mySqli提供了两个接口,一个是面向对象的,另一个是过程的。以面向对象的方式,受影响的_行实际上是mySqli对象的一个属性。但是,如果您更习惯使用过程编码,那么可以使用函数mysqli_impacted_rows,它需要$link参数see more info

程序选项的一个示例:

<?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) );

注意:您还可以找到一个关于过程风格的好教程。

那么$con->consulta$sql;你能分享更多的背景吗?我们如何知道$con内部发生了什么?此代码不可能按所示运行。它包含许多卷引号。您在哪里设置$id\u medico和$id\u llamada?问题:您知道,如果更新有效,受影响的行返回0,但没有更改值?i、 如果Disposible已经是1了?那么你需要分享Conexion的代码,否则这都是猜测。我刚刚添加了它。