Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Aclaración sobre el uso de comillas

Estas en el tema de Aclaración sobre el uso de comillas en el foro de Bases de Datos General en Foros del Web. Estoy queriendo aprender a usar MySQL para migrar un sitio que tengo ya montado con Access. Utilizo PHP completamente para hacer modificaciones a mi BD, ...
  #1 (permalink)  
Antiguo 29/06/2004, 18:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Aclaración sobre el uso de comillas

Estoy queriendo aprender a usar MySQL para migrar un sitio que tengo ya montado con Access. Utilizo PHP completamente para hacer modificaciones a mi BD, y PHPmyAdmin para crear las nuevas tablas y campos.

Estoy viendo que tan complicado es cambiar el código que ya tenía. Sin embargo, el único problema que he tenido hasta el momento es el formato de los querys.

Por ejemplo, cuando hacia un query en Access y lo pasaba por odbc_exec(), lo hacía así:

INSERT INTO Clasificados (Nombre, Telefono, Anuncio) VALUES ('Christian','123456','Vendo PC portatil')

Pero cuando quiero usar exactamente lo mismo en MySQL, me da error

Revisé lo que PHPmyAdmin publicaba cuando hacía los cambios manualmente desde allí, descubrí que la sintaxis que este último ocupaba era:

INSERT INTO 'clasificados' (`Nombre`, `Telefono`, `Anuncio`) VALUES ('Christian','123456','Vendo PC portatil')

Quiero hacer resaltar que la única diferencia que la verdad no me esperaba, es que tuve que usar comillas invertidas en los nombres de los `campos`

Una amiga dice que ella usa 'comillas simples', por lo que no sé por que razón yo debo usar las `comillas invertidas`

Hice algo mal en la instalción, configuración, o es un cambio que de plano "debo de aceptar" con mi movida a MySQL?
  #2 (permalink)  
Antiguo 30/06/2004, 07:59
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
¿Puedes poner el código PHP exacto que empleas?. Será algo como...

Código PHP:
...
$sq1="INSERT INTO Clasificados (Nombre, Telefono, Anuncio) VALUES ('Christian','123456','Vendo PC portatil')";
$res1=mysql_query($sq1);
... 
__________________
Kelpie
  #3 (permalink)  
Antiguo 30/06/2004, 09:31
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Tomando como referencia el BUEN ejemplo de Kelpie, te dejo la otra opción:
Código PHP:
... 
$sq1='INSERT INTO Clasificados (Nombre, Telefono, Anuncio) VALUES ("Christian","123456","Vendo PC portatil")'
$res1=mysql_query($sq1); 
... 
En nombre de la tabla va sin comillas y en la lógica de php las comillas sencillas y dobles es lo mismo. Solo debes tener cuidado que si empezas con comillas sencillas, debes terminar con lo mismo e igual con comillas dobles. Si entre las comillas necesitas poner alguna variable con comillas también, debes usar lo contrario a lo que estas usando para el valor general.

Ejemplo:
$hola = "hola mundo"; o $hola = 'hola mundo´;
$slq1 = ' SELECT * FROM tabla WHERE campo = "$hola" '; o
$slq1 = " SELECT * FROM tabla WHERE campo = '$hola' ";
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 30/06/2004, 11:51
 
Fecha de Ingreso: mayo-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Mire, este es parte de mi código:

Código PHP:
require_once 'vacio.php';
$db mysql_connect("localhost","root","mi_pass");
mysql_select_db("promosql") or die("No pudo seleccionarse la BD.");

$consulta  "SELECT * FROM Clientes";
$resultado mysql_query($consulta) or die("La consulta falló: " mysql_error());

// Impresion de resultados en HTML
echo "<table>";
while (
$linea mysql_fetch_array($resultadoMYSQL_ASSOC)) {
    echo 
"<tr>";
    foreach (
$linea as $valor_col) {
        echo 
"<td>$valor_col</td>";
    }
    echo 
"</tr>";
}
echo 
"</table>\n";

if (@
$_POST['post'] == 'yes')
{
    
$query1 "INSERT INTO Clasificados ('Id', 'Nombre', 'Correo', 'Telefono', 'Categoria', 'Anuncio') VALUES ('','".$_POST['Nombre']."','".$_POST['Email']."','".$_POST['Telefono']."','".$_POST['Categoria']."','".$_POST['Anuncio']."')";
    
$query2 "INSERT INTO Clasificados (`Id`, `Nombre`, `Correo`, `Telefono`, `Categoria`, `Anuncio`) VALUES ('','".$_POST['Nombre']."','".$_POST['Email']."','".$_POST['Telefono']."','".$_POST['Categoria']."','".$_POST['Anuncio']."')";
    
$query3 "INSERT INTO `clasificados` ( `Id` , `Nombre` , `Correo` , `Telefono` , `Categoria` , `Anuncio` ) VALUES ('prueba', 'de', 'una', 'conexion', 'a', 'la base de datos')";

    echo 
$query1 "<br>" $query2 "<BR><BR>";
    
mysql_query($query3,$db) or die("Invalid query 3");
    
mysql_query($query2,$db) or die("Invalid query 2");
    
mysql_query($query1,$db) or die("Invalid query 1");
    echo 
$res;
}
?> 
Ahora bien, lo que me dicen ya lo conocía y lo he aplicado, por ahi nunca he tenido problema, pues mezclo a mi gusto las comillas en mis sintaxis SQL que había usado para Access y nunca tuve el menor problema, pero si me extrañó MUCHO que tuve problema con el código que les pongo aquí arriba.

En sí me interesa que se fijen en las diferencias entre $query1 y $query2. El query2 tiene comillas invertidas y el query1 las tiene normales simples.

Bueno, pues así como están las cosas, el script imprimiría esto:

Invalid query 1

Lo que me indica que el query1 (el de las comillas simples), no está bien, pero el 2 si (y el 3 también)

Me sigo preguntando: ¿por qué solo me acepta comillas invertidas?
  #5 (permalink)  
Antiguo 30/06/2004, 13:42
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Intenta esto:
Código PHP:
$query1 "INSERT INTO Clasificados (Id, Nombre, Correo, Telefono, Categoria, Anuncio) VALUES ('','".$_POST['Nombre']."','".$_POST['Email']."','".$_POST['Telefono']."','".$_POST['Categoria']."','".$_POST['Anuncio']."')"
$query2 "INSERT INTO Clasificados (Id, Nombre, Correo, Telefono, Categoria, Anuncio) VALUES ('','".$_POST['Nombre']."','".$_POST['Email']."','".$_POST['Telefono']."','".$_POST['Categoria']."','".$_POST['Anuncio']."')"
$query3 "INSERT INTO clasificados ( Id , Nombre , Correo , Telefono , Categoria , Anuncio ) VALUES ('prueba', 'de', 'una', 'conexion', 'a', 'la base de datos')"
Esas comillas invertidas que estas poniendo las he visto cuando uso el phpMyAdmin pero en lógica de php, no las uso, solo a como te estoy mostrando.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL

Última edición por BrujoNic; 30/06/2004 a las 13:43
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:07.