Foros del Web » Programando para Internet » PHP »

Error -Procedimientos almacenados en Mysql-php

Estas en el tema de Error -Procedimientos almacenados en Mysql-php en el foro de PHP en Foros del Web. Hola amigos. espero no estar molestando ya que tengo otro tema poray.. Esq como soy nvo en PHP por lo cual creo que es normal ...
  #1 (permalink)  
Antiguo 24/11/2012, 13:39
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 4 meses
Puntos: 0
Error -Procedimientos almacenados en Mysql-php

Hola amigos. espero no estar molestando ya que tengo otro tema poray..
Esq como soy nvo en PHP por lo cual creo que es normal que me salten Errors y Errores y Errores.

Estoy haciendo mi proyecto y antes habia escuchado halgo de procedimientos o funciones almacenadas entonces investigando ps me puse a hacer un ejemplo hay censillido para ver si me funcionaba para trabajar con esto en mi aplicacion pero me da un errorsito . en mi archivo PHP

Aqui mi BD en Mysql ya creada.

CREATE TABLE `datos` (
`cedula` INT NOT NULL ,
`nombre` VARCHAR( 30 ) NULL ,
`apelldio` VARCHAR( 30 ) NULL ,
`direccion` VARCHAR( 50 ) NULL ,
`telefono` VARCHAR( 50 ) NULL ,
PRIMARY KEY ( `cedula` )
) ENGINE = INNODB;
___________________________________
Aqui Mi Formulario HTML

<html>
<body>
<form action="recibe.php" method=POST">
Cedula: <input type="text" name="cedula"><br/>
Nombre: <input type="text" name="nombre"><br/>
Apellido: <input type="text" name="apellido"><br/>
Telefono: <input type="text" name="telefono"><br/>
<input type="submit" value="Enviar">
</form>
</body>
</html>
_________________________________________________
Aqui mi procedimiento almacenado en Mysql ya creado.

CREATE PROCEDURE procedimiento(
IN Cedula int,
IN Nombre varchar(30),
IN Apellido varchar(30),
IN Telefono varchar(50)
)
BEGIN
INSERT INTO datos(cedula,nombre,apellido,telefono)VALUES(Cedul a,Nombre,Apellido,telefono);

END$$
______________________________________
Aqui mi archivo PHP

<?php
include ("conexion.php");

$Cedula = $_POST['cedula'];
$Nombre = $_POST['nombre'];
$Apellido = $_POST['apellido'];
$Telefono = $_POST['telefono'];

$conexion = mysql_connect($host,$user,$pw) or die ("Problemas con la conexion al servidor");
mysql_select_db($db,$conexion) or die ("problemas con la conexion a la base de datos");
$insertar = mysql_query($conexion,'CALL procedimiento('$Cedula','$Nombre','$Apellido','$Te lefono');');

?>
_________________________________________
Aqui mi ERROR:
Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\Procedimientos Almacenados\recibe.php on line 11

* me preguntaba si cree bien el procedmito ??
* si las Variables de este son las mismas q las de mi archivo PHP ??


la Linea 11 es esta : $insertar = mysql_query($conexion,'CALL procedimiento('$Cedula','$Nombre','$Apellido','$Te lefono');');

Última edición por cristo995; 24/11/2012 a las 13:45
  #2 (permalink)  
Antiguo 24/11/2012, 14:03
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 1 mes
Puntos: 31
Respuesta: Error -Procedimientos almacenados en Mysql-php

buenas tardes,
creo que el error es que te falto los puntos de concatenación.
$insertar = mysql_query($conexion,'CALL procedimiento('.$Cedula.','.$Nombre.','.$Apellido. ','.$Telefono.');');
Y la variable $telefono esta partida, por lo menos en el codigo que posteastes.

Saludos
__________________
Tomarse un tiempo para redactar correctamente la pregunta, utilizando los signos de puntuación adecuados, es ganar tiempo y calidad en la respuesta.
  #3 (permalink)  
Antiguo 24/11/2012, 14:12
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Error -Procedimientos almacenados en Mysql-php

Cita:
Iniciado por Javier01 Ver Mensaje
buenas tardes,
creo que el error es que te falto los puntos de concatenación.
$insertar = mysql_query($conexion,'CALL procedimiento('.$Cedula.','.$Nombre.','.$Apellido. ','.$Telefono.');');
Y la variable $telefono esta partida, por lo menos en el codigo que posteastes.

Saludos
No pos mira la variable telefono aqui sale partida pero en realidad no esta es

y me siguei saliendo el error:


Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\Procedimientos Almacenados\recibe.php on line 11
  #4 (permalink)  
Antiguo 24/11/2012, 14:50
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 1 mes
Puntos: 31
Respuesta: Error -Procedimientos almacenados en Mysql-php

Bueno pero ahora el error es otro, y es bastante obvio.
mysql_query($sql,$link)
http://www.php.net/mysql_query
__________________
Tomarse un tiempo para redactar correctamente la pregunta, utilizando los signos de puntuación adecuados, es ganar tiempo y calidad en la respuesta.
  #5 (permalink)  
Antiguo 24/11/2012, 16:26
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Error -Procedimientos almacenados en Mysql-php

Cita:
Iniciado por Javier01 Ver Mensaje
Bueno pero ahora el error es otro, y es bastante obvio.
mysql_query($sql,$link)
[url]http://www.php.net/mysql_query[/url]
no man la verdad no doy con el problemilla soy nvo en PHP

ahora lo hice de esta forma

<?php
$Cedula = $_POST['cedula'];
$Nombre = $_POST['nombre'];
$Apellido = $_POST['apellido'];
$Telefono = $_POST['telefono'];
$conexion = mysqli_connect("localhost","root","","precedimient os_almacenados");
$insertar = mysqli_query($conexion,'CALL procedimiento('.$Cedula.','.$Nombre.','.$Apellido. ','.$Telefono.');');
mysqli_close($conexion);
mysqli_error($conexion);
?>


ya que decia que una de las opciones era la de usar mysqli y por q tambien lo vi en otro post :
http://www.forosdelweb.com/f18/llamar-procedimiento-almacenado-mysql-php-949806/

pero ahora me arroja:

Warning: mysqli_error() [function.mysqli-error]: Couldn't fetch mysqli in C:\wamp\www\Procedimientos Almacenados\recibe.php on line 9
ya hasta me duele la cabeza :( :(
  #6 (permalink)  
Antiguo 24/11/2012, 16:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error -Procedimientos almacenados en Mysql-php

Código PHP:
Ver original
  1. $insertar = mysqli_query($conexion,"CALL procedimiento($Cedula,'$Nombre', '$Apellido', '$Telefono");');
Tres de los parámetros son VARCHAR, pero lo estás enviando sin hacer que las cadenas contenidas en las variables queden encerradas entre apóstrofos.
Ten en cuenta que MySQL, al no ser parte de PHP, no entiende las variables, sino que debes construir la cadena de la sentencia que es lo que la librería envía al servidor. Si lo que pasas en el Nombre es, por ejemplo "JUAN", y no entra con sus apóstrofos, MySQL lo interpreta como un nombre de columna denominado JUAN... y genera un error de ejecución porque intenta asignar una columna imaginaria JUAN a una variable local del SP, y eso es imposible.

¿Se entiende?

Lo que tienes que hacer es, también, capturar el error devuelto por MySQL, ya que la propia base está devolviendo un mensaje que no estás detectando.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/11/2012 a las 17:17
  #7 (permalink)  
Antiguo 26/11/2012, 04:50
Avatar de homlyne  
Fecha de Ingreso: noviembre-2012
Ubicación: Madrid
Mensajes: 59
Antigüedad: 11 años, 4 meses
Puntos: 10
Respuesta: Error -Procedimientos almacenados en Mysql-php

Bueno a principio veo que el error sale en la línea 9 que supongo que es:

mysqli_error($conexion);

mysqli_error() si lo miras en [URL="http://php.net/manual/es/mysqli.error.php"]http://php.net/manual/es/mysqli.error.php[/URL] devuelve errores en la funcion mysqli y en $conexion has guardado la conexion de la base de datos.

La sintaxis correcta es:

mysqli_error($insertar); //$insertar donde tienes la consula.

PD: Para devolver errores en la conexion utiliza [URL="http://www.php.net/manual/es/mysqli.connect-errno.php"]mysqli_connect_errno()[/URL]
__________________
_________________________

Homlyne - Soporte Online

Etiquetas: formulario, html, mysql, mysql-php, procedimientos, almacenar, variables
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 10:38.