Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 29-jun-2004, 18:26   #1 (permalink)
chiwuan está en el buen camino
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
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?
chiwuan está desconectado   Responder Citando
Antiguo 30-jun-2004, 07:59   #2 (permalink)
Kelpie ha deshabilitado el karma
 
Avatar de Kelpie
 
Fecha de Ingreso: noviembre-2002
Ubicación: NorthSpain
Mensajes: 606
¿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
Kelpie está desconectado   Responder Citando
Antiguo 30-jun-2004, 09:31   #3 (permalink)
Moderador NO Sabio
BrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy pronto
 
Avatar de BrujoNic
 
Fecha de Ingreso: noviembre-2002
Ubicación: Costa Rica/Nicaragua
Mensajes: 11.282
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' ";
__________________
Orgulloso de ser latino y demostrar que si uno trata de escribir bien, los demás comprenderán lo que respondo.
¿Fácil verdad?
BrujoNic está desconectado   Responder Citando
Antiguo 30-jun-2004, 11:51   #4 (permalink)
chiwuan está en el buen camino
 
Fecha de Ingreso: mayo-2004
Mensajes: 23
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?
chiwuan está desconectado   Responder Citando
Antiguo 30-jun-2004, 13:42   #5 (permalink)
Moderador NO Sabio
BrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy prontoBrujoNic llegará a ser famoso muy pronto
 
Avatar de BrujoNic
 
Fecha de Ingreso: noviembre-2002
Ubicación: Costa Rica/Nicaragua
Mensajes: 11.282
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.
__________________
Orgulloso de ser latino y demostrar que si uno trata de escribir bien, los demás comprenderán lo que respondo.
¿Fácil verdad?

Última edición por BrujoNic; 30-jun-2004 a las 13:43.
BrujoNic está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:05.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93