digamos:
<?php
$p=4;
...
$query = "SELECT * FROM dtabla WHERE id=¿?";
...
?>
cómo construyo esa sentencia de modo correcto?
Saludos
Morfeo
![Golpeado](http://static.forosdelweb.com/fdwtheme/images/smilies/pelea.png)
| |||
Olvidate de que es una "sentencia SQL" .. mira a tu sentencia SQL como una cadena/string .. así que toda variable que quieras usar .. tratalo como cadenas que son para PHP (cuando las ejecute tu xxx_query() ya significarán algo para tu BD . .mientras tanto para PHP son "cadenas"). Código PHP: echo $query; Un saludo, |
| ||||
Hola a todos. Una duda. Poniendo el código: Código PHP: Gracias por vuestra ayuda. Saludos, ![]() |
| |||
prueba haciendo un echo $query (solo debug), y veras si existe alguna diferencia !!, por lo que tengo entendido php reemplaza automaticamente el valor '$p' dentro de la cadena y quedara igual que si la concatenas con .$p. |
| ||||
Pues en principio no hay diferencias puesto que php pone el valor de la variable. El problema está cuando la cadena está entre comillas simples ya que php no lo interpreta como una variable sino como un literal: ej : $variable="hola"; $mensaje='esto es una prueba: $variable'; un echo $mensaje daría: esto es una prueba: $variable
__________________ ¿Te apasiona el mundo del guión? El portal del guión |
| |||
Yo uso la sintax que puse más arriba usando concatenación (el punto) por qué entre otras cosas .. si se fijan al colocerar el código un editor de código común (o las funciones de PHP como aquí se vé claramente) se ve al instante donde está la "variable" y lo que es el resto de la cadena (sentencia SQL). Un saludo, |
| ||||
Gracias Cluster por tus apreciaciones. Gracias también a los demás foristas por la diversidad de criterios. En mis andanzas por manuales y tutoriales, encontré otra forma optativa de hacerlo: $query = sprintf("SELECT * FROM dtabla WHERE id=%s",$p); Creo que aquí también queda bien definida la variable, al igual que la cadena. Que todo sea por la riqueza del conocimiento Saludos, Morfeo |
| |||
Cita: En ese caso .. el uso de la función printf() usa el motor de expresiones regulares de PHP .. es decir .. algo más de carga de proceso para una taréa simple de sustitución de unas varaibles en un patrón extremadamente simple.
Iniciado por morfeo1002 Gracias Cluster por tus apreciaciones. Gracias también a los demás foristas por la diversidad de criterios. En mis andanzas por manuales y tutoriales, encontré otra forma optativa de hacerlo: $query = sprintf("SELECT * FROM dtabla WHERE id=%s",$p); Creo que aquí también queda bien definida la variable, al igual que la cadena. Que todo sea por la riqueza del conocimiento Saludos, Morfeo Printf() va muy bien para otro tipo de patrones más complejos para sustituciones en cadenas .. Pero para el caso dado .. concatenar, usar comilllas adecuadas y poco más es lo que se requiere y más optimo a nivel de rendimiento del script. A su vez "facilita" la "lectura" del código .. no hay que "pensar" que cada %s indica por orden las subsiguientes cadenas a sustituir o saber que es el "s" pues hay más parámetros que define ese tipo de patrones. Un saludo, |
| ||||
Cita:
Iniciado por living Pues en principio no hay diferencias puesto que php pone el valor de la variable. El problema está cuando la cadena está entre comillas simples ya que php no lo interpreta como una variable sino como un literal: ej : $variable="hola"; $mensaje='esto es una prueba: $variable'; un echo $mensaje daría: esto es una prueba: $variable viendo entonces la acotación de Living me asalta una duda: Cómo crear entonces la concatenación para que php lo interprete de igual forma siempre? ![]() |
| ||||
Cita: No entiendo del todo bien tu pregunta.
Iniciado por morfeo1002 viendo entonces la acotación de Living me asalta una duda: Cómo crear entonces la concatenación para que php lo interprete de igual forma siempre? Código PHP: Código PHP: Saludos ![]() |
| ||||
También hay que tener en cuenta si se necesita que el valor de la variable vaya entre comillas simples (como es usual para valores de campos no numéricos en mySQL) lo siguiente: Código PHP: La cadena está delimitada (al comienzo) por comillas dobles y sólo se cerrará cuando encuentre otras comillas dobles (al final).... todo lo que esté entre ellas será tomado como parte de la cadena.... por lo tanto la comillas simples que están antes y después de $valor son un caracter más y no se toman como límite de la cadena... por lo que no afectan a la variable $valor. Saludos ![]() |