Problemas de sintaxe com sentença GRANT e php, atribuir privilégios

  • Autor Autor iniciopublic
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
iniciopublic

iniciopublic

Préstamo impago
1
Ómicron
Verificación en dos pasos activada
Suscripción a IA
Hola a todos estoy tratando de hacer un pequeño programa para crear a un usuario y asignarle privilegios en el gestor de base de datos en php

este es el código :

PHP:
<?php 
$host1='localhost'; 
$user1='root'; 
$pass1=''; 
$conexion=mysql_connect($host1,$user1,$pass1); 
if(!$_POST) 
{ 
?> 
<form id="form1" method="post" action="base.php" enctype="multipart/form-data"> 
<input type="text" name="usuario" > Nombre usuario <br> 
<br><b>Datos:</b><br> 
<input type="checkbox" name="insert" value="insert"> Insert <br> 
<input type="checkbox" name="delete" value="DELETE"> Delete<br> 
<input type="checkbox" name="file" value="FILE"> File<br> 
<input type="checkbox" name="SELECT" value="SELECT"> SELECT<br> 
<input type="checkbox" name="UPDATE" value="UPDATE">UPDATE<br> 
<INPUT name="Registrar" type=submit value="Registrar"> 
<?php 
} 

else 
{ 

$host = 'localhost'; 
$pass = '12345'; 
$user =$_POST["usuario"];
$delete =$_POST["delete"]; 
$file =$_POST["file"]; 
$insert =$_POST["insert"]; 
$select =$_POST["SELECT"]; 
$update =$_POST["UPDATE"]; 

$createQ = "CREATE USER '{$user}'@'{$host}' IDENTIFIED BY '{$pass}'"; 
$grantQ = "GRANT  {$file},{$insert},{$delete},{$selec},{$update}  ON  *.* TO '{$user}'@'{$host}' WITH GRANT OPTION"; 
if(mysql_query($createQ)){ 
    echo 'Usuario creado <br/>'; 
    if(mysql_query($grantQ)){ 
        echo 'Permisos concedidos<br/>'; 
    }else{ 
        echo 'permissions query failed:'.mysql_error().'<br/>'; 
    } 
     
}else{ 
    echo '<b>El usuario posiblemente ya existe </b>:'.mysql_error().'<br/>'; 
} 
} 
?>

El problema con las comas (, ) , si no seleccione un checkbox la coma en la sentencia queda (por lo que quedarian 2 comas juntas) y me aparece error en la sintaxis

¿Que puedo hacer en ese caso?

Le agradezco su pronta ayuda

saludos
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Ponle condiciones, algo como:
PHP:
$grant = [];

if ( $file )	  $grant[] = $file;
if ( $insert )	$grant[] = $insert;
if ( $delete )	$grant[] = $delete;
if ( $select )	$grant[] = $select;
if ( $update )	$grant[] = $update;

$grant = implode(',', $grant);

y ya después en el query:
PHP:
$grantQ = "GRANT  {$grant}  ON  *.* TO '{$user}'@'{$host}' WITH GRANT OPTION";

Saludos.
 
Última edição:
Voltar
Topo