Estoy tratando de insertar en una tabla MySQL y estoy utilizando una condición, el código es el siguiente:
function updateBadgesChamilo($DB, $DB2, $id){
$sql = "SELECT b.name as competencia FROM skill s
INNER JOIN skill_rel_user sru ON s.id=sru.skill_id
INNER JOIN user u ON u.id=sru.user_id
INNER JOIN sm4rtuniversity.members m ON m.email=u.email
INNER JOIN sm4rtuniversity.badges b ON b.name=s.name
WHERE m.id = :id";
$comunicacion;
try{
$statement = $DB2->prepare($sql);
$statement->bindParam(":id", $id);
$statement->execute();
$resultado = $statement->fetchAll();
if($resultado['competencia']=='Comunicacion Asertiva'){
$comunicacion = 'si';
}else{
$comunicacion = 'no';
}
//Comunicación asertiva
$comunicacionID = '23' ;
$sqlComunicacion = "INSERT INTO badges_members (user_id, badge_id, active)
VALUES (':id',':comunicacionID',':comunicacion')
ON DUPLICATE KEY UPDATE active=':comunicacion'";
$stmtcomunicacion = $DB->prepare($sqlComunicacion);
$stmtcomunicacion->bindParam(":id", $id);
$stmtcomunicacion->bindParam(":comunicacionID", $comunicacionID);
$stmtcomunicacion->bindParam(":comunicacion", $comunicacion);
$stmtcomunicacion->execute();
}catch (Exception $ex) {
$ex->getMessage();
}
}
Mando llamar a esa función de la siguiente manera:
updateBadgesChamilo($DB, $DB2, $user['id']);
En la columna active de la tabla badges_members tendría que insertarse un sí, ya que el resultado de la consulta es "Comunicacion Asertiva".
Pero se inserta como un no.
Al parecer creo que la condición esta bien.
Pero no se que otra parte del código este funcionando de mala manera.