MySQL instrucción Select - Se necesita ayuda con la sintaxis

  • anyusernamewilldo
  • Novice
  • Novice
  • No Avatar
  • Registrado: Ago 05, 2009
  • Mensajes: 22
  • Status: Offline

Nota Mayo 30th, 2010, 4:01 am

Hola chicos, me preguntaba si alguien me podría apuntar en la dirección correcta...

En mi declaración seleccione estoy tratando de lograr una variable como el valor de mi cláusula WHERE...

por ejemplo:
Código: [ Select ]
WHERE SomeField='".$EnteredValue."'


por ejemplo:
Código: [ Select ]
$query = "SELECT * FROM `SomeTable`
WHERE SomeField='".$EnteredValue."' ORDER by ID DESC";
  1. $query = "SELECT * FROM `SomeTable`
  2. WHERE SomeField='".$EnteredValue."' ORDER by ID DESC";


Sin embargo, no su conseguir el valor de $ EnteredValue. En su lugar, sólo se lee como si se tratara de texto estático...por ejemplo, si puedo reemplazar $ EnteredValue con algunos pantanos de texto estándar que funciona bien. Así que no a su ver a mi $ EnteredValue como una variable...

Por favor que alguien me dirija en la dirección correcta...
Gracias de antemano.

Arrendajo
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Mayo 30th, 2010, 4:01 am

  • anyusernamewilldo
  • Novice
  • Novice
  • No Avatar
  • Registrado: Ago 05, 2009
  • Mensajes: 22
  • Status: Offline

Nota Mayo 30th, 2010, 5:12 am

Ah, Nevermind gente...Resuelto ello.

Código: [ Select ]
"SELECT * FROM `SomeTable` WHERE SomeField='$EnteredValue' ORDER by ID DESC"



Así funciona esto:
Código: [ Select ]
WHERE SomeField='$EnteredValue'


Y esto no:
Código: [ Select ]
WHERE SomeField='".$EnteredValue."'
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Mayo 30th, 2010, 5:44 am

Im aquí rascándome la cabeza de por qué funciona ahora. El youve cambio realizado aquí no debe realmente hacer una diferencia.
Strong with this one, the sudo is.
  • anyusernamewilldo
  • Novice
  • Novice
  • No Avatar
  • Registrado: Ago 05, 2009
  • Mensajes: 22
  • Status: Offline

Nota Mayo 30th, 2010, 7:10 am

Su derecho...

Después de algunas pruebas adicionales, tanto los métodos de trabajo...Creo que el problema era los $ EnteredValue no se pasa o recibido de la página anterior correctamente.

Todavía no está nada mal - terminó con 2 soluciones de trabajo :)
aplausos para echar un vistazo joe


Arrendajo
Moderator Remark: clipped Ozzu-specific section to create new thread with
  • onlyican.com
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Nov 20, 2005
  • Mensajes: 1589
  • Loc: Hants, UK
  • Status: Offline

Nota Junio 14th, 2010, 7:03 am

Razones por las cuales usted debe dar vuelta de informe de errores en estricta (E_ALL) y siempre para escapar de una cadena para mostrar una variable.

Nota: Si la variable era indefinido (no interpretado) entonces sería NULL
El error en el nombre de variable muestra que normalmente se produce cuando
A) La variable no es escapar de la cadena
B) Un espacio producido entre el signo $ y el inicio de su variable
Heal your mind, and the body will follow
  • sandy_j_sam
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Jul 26, 2010
  • Mensajes: 9
  • Status: Offline

Nota Julio 28th, 2010, 10:33 pm

Hola, que acaba de sustituir a ese código con la secuencia de comandos


<? Php
EnteredValue $ = "Jai Sai Ram";
$ conn = mysql_connect ("localhost", "root",);
$ db = mysql_select_db ("database", $ conn);
$ sql = mysql_qyery ("SELECT * FROM WHERE En algún momento SomeField ORDEN = $ EnteredValue por ID DESC", $ conn);
?>
Según mi opinión, ayuda para usted.
  • onlyican.com
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Nov 20, 2005
  • Mensajes: 1589
  • Loc: Hants, UK
  • Status: Offline

Nota Julio 29th, 2010, 1:05 am

hola Sandy

1) es una mala práctica para definir la conexión cada vez que ejecute una consulta
Lo que si cambia algo así como el nombre de usuario / contraseña

2) Es una mejor práctica para definir la consulta SQL como una variable, esto le permite hacerse eco de tu consulta y ver los errores, como darse cuenta de la variable no es que se está analizando

3) Si va a agregar una variable a su consulta, es necesario envolver en comillas simples para contar SQL es una cadena
Mi método, que es un "" preferido método

Constantes Mundial Archivo, que contiene las siguientes

PHP Código: [ Select ]
define('DB_HOST', 'localhost');
define('DB_USER', 'database_user');
define('DB_PASS', 'database_pass');
define('DB_NAME', 'database_name');
 
  1. define('DB_HOST', 'localhost');
  2. define('DB_USER', 'database_user');
  3. define('DB_PASS', 'database_pass');
  4. define('DB_NAME', 'database_name');
  5.  

El primer ejemplo en el que recientemente he usado esto, he actualizado mi sitio web en un área de desarrollo, que no quería cambios en el desarrollo que afectan al sitio en producción, por lo que he copiado la base de datos, añadió que "v2" hasta el final y cambió el db_name en el anterior expediente

En segundo lugar, tengo una clase SQL, que maneja todos mis preguntas

así que sólo tienes que llamar como tales
PHP Código: [ Select ]
//Protect against SQL Injection, we check the string, mainly for user entered data
$strMyVar = $objDBClass->purifyString($strMyVar);
$strSql = "SELECT * FROM tblName WHERE fldName = '".$strMyVar."' ORDER BY ID DESC"
//Parse the query to my class
$objDBClass->setSql($strSql);
//Run Query
if($objDBClass->setData()){
$arrResults = $objDBClass->getData();
}else{ //An error has occured
//I want to debug, this will be removed before it goes live, I actually have a function for this bit
echo 'SQL was '.$strSql.'<br />';
echo $objDBClass->getErrorMessage().'<br />'; //Only gets the standard PHP MySQL Error
 
}
 
  1. //Protect against SQL Injection, we check the string, mainly for user entered data
  2. $strMyVar = $objDBClass->purifyString($strMyVar);
  3. $strSql = "SELECT * FROM tblName WHERE fldName = '".$strMyVar."' ORDER BY ID DESC"
  4. //Parse the query to my class
  5. $objDBClass->setSql($strSql);
  6. //Run Query
  7. if($objDBClass->setData()){
  8. $arrResults = $objDBClass->getData();
  9. }else{ //An error has occured
  10. //I want to debug, this will be removed before it goes live, I actually have a function for this bit
  11. echo 'SQL was '.$strSql.'<br />';
  12. echo $objDBClass->getErrorMessage().'<br />'; //Only gets the standard PHP MySQL Error
  13.  
  14. }
  15.  


Como usted puede ver arriba, también está limpio, la conexión y todo está en una clase, y me hago eco a cabo la consulta para la depuración si tengo que
Heal your mind, and the body will follow
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 29th, 2010, 9:51 am

Im no un gran fan de la utilización de las constantes de contraseñas más. Me gusta usar un stdClass o una matriz para mantener la información base de datos en un archivo de configuración, a continuación, include () que el derecho de archivo de configuración antes de la conexión de base de datos se hace, y unset () la explotación stdClass los detalles de base de datos inmediatamente después.

Pensé que no me gusta la idea de tener los detalles en torno persistentes por más tiempo de lo que tiene que ser.
Strong with this one, the sudo is.
  • onlyican.com
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Nov 20, 2005
  • Mensajes: 1589
  • Loc: Hants, UK
  • Status: Offline

Nota Julio 29th, 2010, 10:54 am

Ese es un punto justo Joebert, pero la gente no debe poder tener acceso a datos constantes más fácil de lo que puede una matriz a partir de una configuración.

He conocido a poeple soo, paranoide, se llevaron al extremo de no cifrar la contraseña en una constante y descifrar la contraseña cuando se utiliza en la base de datos.

Esto no es necesario.
Heal your mind, and the body will follow
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 29th, 2010, 12:08 pm

Todo es discutible si alguien aprende el nombre de la constante y se encuentra en un lapso de seguridad en algún lugar que pueda imprimir esa constante.

Si lo cargo, usarlo, proceda a su destrucción, entonces la probabilidad de que mi solicitud de exponerlo, es cero por ciento. La única manera de que puedan estar expuestos, es a través de permisos de los archivos laxa, o una vulnerabilidad en la librería MySQL PHP o la aplicación de la misma, que existiría sin importar lo que escribo mi solicitud. gif "alt = =":)" título" Smile ">

¿Cómo puedo unset () una constante?
Strong with this one, the sudo is.
  • onlyican.com
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Nov 20, 2005
  • Mensajes: 1589
  • Loc: Hants, UK
  • Status: Offline

Nota Julio 29th, 2010, 1:20 pm

si alguien tenía la capacidad de hackear el sitio a un eco constante, que puede incluir probs ur archivo y establecer los valores de nuevo.
Y la abeja se ur contraseña último de sus problemas
Heal your mind, and the body will follow
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 29th, 2010, 5:02 pm

El mundo podría ser destruido por un enorme asteroide en cualquier segundo, pero eso no significa que debamos dejar de comer.
Strong with this one, the sudo is.
  • onlyican.com
  • Mastermind
  • Mastermind
  • Avatar de Usuario
  • Registrado: Nov 20, 2005
  • Mensajes: 1589
  • Loc: Hants, UK
  • Status: Offline

Nota Julio 30th, 2010, 1:03 am

todos podríamos morir por mis compañeros de la parte trasera, no significa.

N realidad, yo voy a por una máscara de gas, eso es repugnante.
Heal your mind, and the body will follow

Publicar Información

  • Total de mensajes en este tema: 13 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 176 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC