mysql查询复制行

ovfsdjhp  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(593)

我遇到的问题是,我通过一个函数传递的查询复制了我的行。以前,我没有使用语句->execute(array()),而是让param\u str处理每个值。然而,它开始给我带来麻烦。这是复制行的代码。

static public function mdlIngresarUsuario($datos){
    $statement = Conexion::conectar()->prepare("INSERT INTO usuarios (id, nombre, usuario, password, rol, estado) VALUES (null, :nombre, :usuario, :password, :rol, :estado)");
    $statement->execute(array(
        ':nombre' => $datos['nombre'],
        ':usuario' => $datos['usuario'],
        ':password' => $datos['password'],
        ':rol' => $datos['rol'],
        ':estado' => 0
    ));
    if ($statement->execute()) {
      return "ok";
    } else {
      return "error";
    }
}
bqf10yzr

bqf10yzr1#

这是因为你打电话 $statement->execute 两次,一次在“创建”它的地方,一次在if语句中。您应该将第一个execute的值赋给一个变量,并在if语句中使用该变量,如:

public static function mdlIngresarUsuario($datos)
{
    $statement = Conexion::conectar()->prepare("INSERT INTO usuarios (id, nombre, usuario, password, rol, estado) VALUES (null, :nombre, :usuario, :password, :rol, :estado)");
    $result = $statement->execute(array(
        ':nombre' => $datos['nombre'],
        ':usuario' => $datos['usuario'],
        ':password' => $datos['password'],
        ':rol' => $datos['rol'],
        ':estado' => 0
    ));
    if ($result) {
        return "ok";
    } else {
        return "error";
    }
}
sirbozc5

sirbozc52#

您将执行该语句两次:

$statement->execute(array(
':nombre' => $datos['nombre'],
':usuario' => $datos['usuario'],
':password' => $datos['password'],
':rol' => $datos['rol'],
':estado' => 0
));

然后在if语句的条件下:

if ($statement->execute()) {
  return "ok";
}

只需记录第一个“execute”的返回,并将其用作条件:

$success = $statement->execute(array(
':nombre' => $datos['nombre'],
':usuario' => $datos['usuario'],
':password' => $datos['password'],
':rol' => $datos['rol'],
':estado' => 0
));
if( $success ) { return "ok"; }

相关问题