Yo lo hice asi:
$bd_empresa='tubasededatos';
$host='nombrehost';
$usuariobd = 'nombre usuario';
$clave = 'clave';
//Conexion
$dsn = "mysql:dbname=$bd_empresa;host=$host;charset=utf8";
try {
$conn_emp = new PDO($dsn, $usuariobd, $clave, array(
PDO::MYSQL_ATTR_LOCAL_INFILE => true,));
$conn_emp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn_emp->exec("set names utf8");
$conn_emp->query("SET SESSION sql_mode = ''");
echo 'Conexion establecida<br>';
} catch (PDOException $e) {
echo utf8_decode('Fallo en la conexión: ') . $e->getMessage();
}
function valida_index($tabla, $index){
global $conn_emp;
$Rindex=0;
$siindex = "SHOW INDEX FROM $tabla WHERE KEY_NAME = '$index'";
try{
$Qindex = $conn_emp->query($siindex);
}catch (PDOException $e) {
echo utf8_decode('No se pudo consultar la informacion suministrada: ') . $e->getMessage();
return $Rindex;
}
$Rindex = $Qindex->rowCount();
return $Rindex;
}
$index = 'tuindice'; //Debe ser el nombre de un campo de la tabla
$tabla = 'tutabla';
$Rindex = valida_index($tabla, $index);
//echo $Rindex.'<br>';
if($Rindex>0){
echo "Ya existe un indice: $index en esa tabla: $tabla<br>";
}else{
$Tcolum = "ALTER TABLE $tabla ADD INDEX ($index)";
try{
$Qcolum = $conn_emp->query($Tcolum);
$Qcolum->closeCursor();
}catch (Exception $e){
echo utf8_decode('No se pudo crear el indice. Revise que este bien el nombre de la tabla y el campo del indice<br>') . $e->getMessage();
return;
}
echo "El indice: $index fue creado, en la tabla: $tabla";
}
return;