Foros del Web » Programando para Internet » PHP »

se puede usar mysql_real_escape_string en un array?

Estas en el tema de se puede usar mysql_real_escape_string en un array? en el foro de PHP en Foros del Web. estoy editando varios registros de una tabla pero me gustaria saver si se puede usar mysql_real_escape_string en el array, tambien me gustaria saver si ay ...
  #1 (permalink)  
Antiguo 04/12/2010, 07:02
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 3
se puede usar mysql_real_escape_string en un array?

estoy editando varios registros de una tabla pero me gustaria saver si se puede usar mysql_real_escape_string en el array, tambien me gustaria saver si ay otra manera de editar varios registros a la ves...



Código PHP:
Ver original
  1. <?php
  2.  
  3. $result = mysql_db_query($database, "select * from archivos order by id desc") or die (mysql_error());
  4. if(mysql_num_rows($result)>0){
  5.     while($qry = mysql_fetch_array($result)){
  6. <?
  7.  
  8. <form action="update.php" method="post"  >
  9.  
  10. <input type="hidden" name="id[]"  value="<?php echo $qry['id']; ?>" readonly="readonly" />
  11.  
  12.  
  13.  
  14. <input  nombre="nombre[]"  value="<?php echo $qry['name'];}} ?>" />
  15.  
  16. </form>


update.php
Código PHP:
Ver original
  1. <?php
  2. $nombres = $_POST['nombre'];
  3. $id_beats = $_POST["id"];
  4.                                  
  5. for ($i=0; $i<count($id_beats); $i++){
  6.  
  7.     $consulta = "UPDATE archivos SET name = '".$nombres [$i]."' WHERE id = '" .$id_beats[$i]."'";
  8.     mysql_query($consulta) or die(mysql_error());
  9.  
  10. ?>
  #2 (permalink)  
Antiguo 04/12/2010, 07:48
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: se puede usar mysql_real_escape_string en un array?

Que dice el primer argumento de la función string o array?

http://php.net/manual/en/function.my...ape-string.php

Si te refieres si se puede usar en cada uno de los string contenidos en el array la respuesta es sí.

Respecto a si puede modificar muchos registros a la vez, no es posible, debes modificar uno a uno los registros, debido a que los registros se guardan por filas y las modificaciones con update afectan a las columnas de estas filas, no puedes mezclar filas y columnas en una misma consulta.

Sí se puede optimizar y es que ingrese las modificaciones cuando no haya más cliente conectados usando LOW_PRIORITY en el query
  #3 (permalink)  
Antiguo 04/12/2010, 08:04
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: se puede usar mysql_real_escape_string en un array?

Cita:
Iniciado por abcdefghi Ver Mensaje
no es posible, debes modificar uno a uno los registros
Con el codigo que muestro aqui arriva yo edito varios registros a la misma ves, y no me da ningun error, por que dices que no es posible?
  #4 (permalink)  
Antiguo 04/12/2010, 08:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: se puede usar mysql_real_escape_string en un array?

Cita:
Iniciado por Ojete Ver Mensaje
Con el codigo que muestro aqui arriva yo edito varios registros a la misma ves, y no me da ningun error, por que dices que no es posible?
mmmmm nop, editas varios registros pero no a la vez, ejecutas una query por registro.
Podrias utilizar Prepared Statments y en vez de usar mysq_query porque no utilizas PDO ?
  #5 (permalink)  
Antiguo 04/12/2010, 08:54
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: se puede usar mysql_real_escape_string en un array?

Si se puede usar mysql_real_escape_string en un array. Para eso está array_map y array_walk.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #6 (permalink)  
Antiguo 04/12/2010, 23:30
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: se puede usar mysql_real_escape_string en un array?

y si quiero validar los datos? como se hace con un array...
me da este error:

Warning: preg_match() expects parameter 2 to be string, array given in

Código PHP:
Ver original
  1. $pre = '/([?1234567890][.][1234567890][1234567890])+$/';
  2. $sino = preg_match($pre, $precios)? 'si': 'no';
  3. $no ="no";
  4. if  ($no==$sino){
  5. echo " Please enter a valid value in the Price.";
  6. }

Última edición por Ojete; 05/12/2010 a las 00:41
  #7 (permalink)  
Antiguo 05/12/2010, 05:15
 
Fecha de Ingreso: diciembre-2010
Ubicación: valencia
Mensajes: 203
Antigüedad: 13 años, 11 meses
Puntos: 11
Respuesta: se puede usar mysql_real_escape_string en un array?

array[0] = valor1
array[1] = valor2

con foreach puedes recorrer todo el array y hacer lo que necesites con cada elemento.
  #8 (permalink)  
Antiguo 05/12/2010, 16:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: se puede usar mysql_real_escape_string en un array?

o puedes usar las funciones para array...
http://www.php.net/manual/en/language.types.array.php

por ejemplo array_map()
http://php.net/array_map
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 06/12/2010, 07:28
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: se puede usar mysql_real_escape_string en un array?

nel pastel ya leey como loco pero no entiendo,

no se que mas ponerle y donde ponerle para que esto funcione pues me da el siguiente error:


Warning: preg_match() expects parameter 2 to be string, array given in C:\xampp\htdocs\members\update_beats.php on line 165
Please enter a valid value in the Price.


alguien me explica con manzanas por favor???



Código PHP:
Ver original
  1. $pre = '/([?1234567890][.][1234567890][1234567890])+$/';
  2. $sino = preg_match($pre, $precios)? 'si': 'no';
  3. $no ="no";
  4. if  ($no==$sino){
  5. echo " Please enter a valid value in the Price.";
  6.  
  7. }
  #10 (permalink)  
Antiguo 06/12/2010, 07:35
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: se puede usar mysql_real_escape_string en un array?

El error esta claro, te esa diciendo que el 2º parametro de preg_match debe ser un string y le estas pasando un array.
  #11 (permalink)  
Antiguo 06/12/2010, 07:47
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: se puede usar mysql_real_escape_string en un array?

todavia no lo agarro, que tengo que hacer???
  #12 (permalink)  
Antiguo 06/12/2010, 08:09
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: se puede usar mysql_real_escape_string en un array?

La variable $precios es un arreglo y a la función le debes pasar un string, así que si son varios elementos que queres comprobar, usa un bucle como se te dijo para el mysql_real_escape_string
  #13 (permalink)  
Antiguo 06/12/2010, 08:10
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: se puede usar mysql_real_escape_string en un array?

$precios es del tipo array, si queres validar los precios del array deberias iterar sobre el mismo, checkeando cada uno, algo así:
Código PHP:
Ver original
  1. ....
  2. $errors = array();
  3. foreach($prices as $price){
  4.     if(!preg_match($pre, $price)){
  5.         $errors[] = sprintf('value :: %s :: isn't valid', $price);
  6.    }
  7. }
  8.  
  9. if(!empty($errors)){
  10.  ....
  11. }
  #14 (permalink)  
Antiguo 06/12/2010, 08:39
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: se puede usar mysql_real_escape_string en un array?

Muchas gracias solo me dio un error pero era por el apostrofe en la palabra isn't solo lo quite y listo, haora me boy a estudiar mas a fondo todo esto de validar con los arrays, gracias masterpuppet....
  #15 (permalink)  
Antiguo 06/12/2010, 08:44
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: se puede usar mysql_real_escape_string en un array?

para escapar el apostrofe usa la barra invertida, quedaría así:

Código PHP:
$errors[] = sprintf('value :: %s :: isn\'t valid'$price); 
  #16 (permalink)  
Antiguo 06/12/2010, 08:53
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: se puede usar mysql_real_escape_string en un array?

Cita:
Iniciado por areslepra Ver Mensaje
para escapar el apostrofe usa la barra invertida, quedaría así:

Código PHP:
$errors[] = sprintf('value :: %s :: isn\'t valid'$price); 
Gracias areslepra ya se me avia olvidado ...
  #17 (permalink)  
Antiguo 06/12/2010, 09:06
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: se puede usar mysql_real_escape_string en un array?

Cita:
Iniciado por spider_boy Ver Mensaje
Si se puede usar mysql_real_escape_string en un array. Para eso está array_map y array_walk.
No, no se puede y estos comentarios terminan confundiendo al que consulta ya que está claro que no entiende la diferencia entre array y string.

La función mencionada sólo soporta string, como especifica su documentación, si consideramos, como he aclarado, que un array es un conjunto de datos que pueden ser string, enteros, flotantes, boleanos, arrays, objetos, etc; Se le podría aplicar la función a cada uno de los string contenidos en el array, que es distinto a que nativamente lo soporte y podría ser por los métodos que has indicado o en el caso de él dentro del foreach para ahorrar código y procesos.

No viene al caso y sólo para confusión, debido a que PHP no es de tipado fuerte, los enteros, flotantes, boleanos también le podríamos aplicar la función ya que transformará automáticamente los tipo indicados a string, en su caso a los array, objetos, etc, no le podríamos aplicar la función sin antes procesarla para obtener sus strings.

Naranjas con Naranjas, Peras con Peras, Manzana con Manzanas, a cada cosa su correspondencia.
  #18 (permalink)  
Antiguo 06/12/2010, 12:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: se puede usar mysql_real_escape_string en un array?

abcdefghi, no digas tonterías...

es como si dices que en la canasta de huevos, si no son huevos, no puedes llevar vegetales...

claro, que aquí el amigo Ojete no se toma la libertad de estudiar, y sobre todo conocer la diferencia entre un huevo, un vegetal y leche... ¡¡se le olvidaba que para llevar leche se necesitan botellas!!

Código PHP:
function mi_filtro($cadena)
{
  
$pre '/([?1234567890][.][1234567890][1234567890])+$/'
  
$sino preg_match($pre$cadena)? 'si''no'
  return 
$sino;
}

foreach (
$precios as $uno)
{
  
$sino mi_filtro($uno);
  if  (
'no' == $sino){
    echo 
" Please enter a valid value in the Price.";
  }

y vamos, que si vamos a confundir... inicialmente se pedía escapar valores de un array...
Cita:
Iniciado por spider_boy Ver Mensaje
Si se puede usar mysql_real_escape_string en un array. Para eso está array_map y array_walk.
dicho y hecho!!
Código PHP:
array_walk($precios'mysql_real_escape_string');
$precios array_map('mysql_real_escape_string'$precios); 
y entonces solo porque Ojete no entiende la diferencia debemos tratar la información con cautela, ¿quizá porque hay que asumir que todos son igual de flojos?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #19 (permalink)  
Antiguo 06/12/2010, 19:17
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: se puede usar mysql_real_escape_string en un array?

Cita:
Iniciado por pateketrueke Ver Mensaje
abcdefghi, no digas tonterías...

es como si dices que en la canasta de huevos, si no son huevos, no puedes llevar vegetales...
La canasta puede tener muchas cosas:

Cita:
un array es un conjunto de datos que pueden ser string, enteros, flotantes, boleanos, arrays, objetos, etc;
Y pueden existir muchas clases de huevos:

Cita:
debido a que PHP no es de tipado fuerte, los enteros, flotantes, boleanos también le podríamos aplicar la función ya que transformará automáticamente los tipo indicados a string
Pero para la función no se puede mezclar con vegetales:

Cita:
en su caso a los array, objetos, etc, no le podríamos aplicar la función
Cita:
Sin antes procesarla para obtener sus strings:
Cita:
Código PHP:
array_walk($precios'mysql_real_escape_string'); 
$precios array_map('mysql_real_escape_string'$precios); 
o en el caso de él dentro del foreach

Código PHP:
//...... 
    
$consulta "UPDATE archivos SET name = '".mysql_real_escape_string($nombres[$i])."' WHERE id = " .(int)$id_beats[$i];
//....... 
fácil como un pancake me dijo un ponja una vez.

Etiquetas: Ninguno
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 21:16.