我有一个函数,可以对表进行更新,调用该函数后,我检查表并更改了行,但是该函数返回“更新时出错”而不是“被医生占用”。这是我的功能。
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;
}
}
}
答案 0 :(得分:1)
假设$con->mysqli
是连接句柄,则affected_rows
是属性而不是方法。所以你的线...
if ($con->mysqli->affected_rows() > 0) {
应该是
if ($con->mysqli->affected_rows > 0) {
您在...中使用哪种方式
// var_dump($con->mysqli->affected_rows);
答案 1 :(得分:0)
mySqli提供了两个接口,一个是面向对象的,另一个是过程性的。以面向对象的方式,受影响的行确实是mySqli对象的属性。但是,如果您更习惯使用过程编码,则可以使用函数mysqli_affected_rows
(),该函数需要一个$link
参数(请参阅更多信息here)。
程序选项的示例:
<?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) );
注意:您可能还会找到有关程序样式here的很好的教程。