¿Cuál es la diferencia entre las siguientes 2 consultas?¿Cómo afecta {} una consulta MySQL en PHP?
mysql_query("UPDATE table SET name = '$name'");
mysql_query("UPDATE table SET name = '{$name}'");
¿Cuál es la diferencia entre las siguientes 2 consultas?¿Cómo afecta {} una consulta MySQL en PHP?
mysql_query("UPDATE table SET name = '$name'");
mysql_query("UPDATE table SET name = '{$name}'");
EN el lado SQL, no hay absolutamente ninguna diferencia: las dos consultas son exactamente las mismas.
(se puede comprobar que por el eco de todas ellas)
{$variable}
es una sintaxis más completa de $variable
, que permite usar:
"this is some {$variable}s"
"{$object->data}"
"{$array['data']}"
"{$array['data']->obj->plop['test']}"
Para más información, lea la sección del manual Variable parsing/Complex (curly) syntax(citar unos pocos bits):
Esto no se llama complejo porque la sintaxis es compleja, sino porque permite el uso de expresiones complejas .
Cualquier variable escalar, elemento de matriz o propiedad objeto con una representación de cadena pueden incluirse a través de esta sintaxis.
Simplemente escriba la expresión de la misma forma en que aparecería fuera de la cadena, y luego envuélvala en{
y}
.
¡Buena respuesta completa! – Treffynnon
Las llaves "escapan" la variable de PHP y no se pasan a MySQL. Con una variable simple como $name
no hace la diferencia, pero con algo como $user['name']
lo hace. Entonces, no hay nada diferente entre las dos consultas que ha publicado en su pregunta.
Esta consulta se puede utilizar si desea pasar una sola variable:
mysql_query("UPDATE table SET name = '$name'");
Esto puede ser usado si estás pasando un valor de índice en particular de una matriz.
mysql_query("UPDATE table SET name = '{$1}'",$name);
Por cierto, sus dos consultas también fueron correctas en cuanto a sus posibilidades.
Tenga en cuenta que puede [formatear líneas como código] (http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) al sangrarlas cuatro espacios. El botón "{}" en la barra de herramientas del editor hace esto por usted. Edita tu respuesta y pruébala. Haga clic en el signo de interrogación naranja en la barra de herramientas del editor para obtener más información y sugerencias sobre el formateo. – outis
Todavía tengo que encontrar la sintaxis SQL que usa llaves. –
El código de ejemplo puede ser vulnerable a [SQL injection] (http://unixwiz.net/techtips/sql-injection.html), que es un [riesgo de seguridad] muy serio (http://bobby-tables.com/) Para solucionar este problema, cambie del controlador obsoleto mysql a [PDO] (http://php.net/PDO) y use [declaraciones preparadas] (http://www.php.net/PDO.prepared-statements). Si necesita un tutorial de PDO, intente ["Escribir secuencias de comandos de MySQL con PHP y PDO"] (http://www.kitebird.com/articles/php-pdo.html). El sitio que guardas puede ser tuyo. – outis
Las llaves son una cosa de PHP, no de MySQL, FYI –