| Por: María Celia Ibarra | | 09/3/2002
|
Tal vez un cambio de versión ocasiona que la ejecución de la carga de un registro muestre el siguiente mensaje:
Warning: mysql_db_query is deprecated; use mysql_select_db() and mysql_query() instead in C:\EjemplosPHP\insertar.php on line 10
Para resolverlo hay que reemplazar la función
mysql_db_query
por estas dos:
mysql_select_db()
mysql_query()
Ejemplo:
Donde dice:
mysql_db_query("ejemplo","insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
Hay que reemplazar por:
mysql_select_db("ejemplo");
mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
Lo demás funciona perfecto.
No olviden poner la conexion a la base de datos usando mysql_connect("suhost", "usuario", "sucontraseña");
Si acabas de instalar PHP, la varible Register_Global debe estar en "On" en el archivo PHP.ini, si no el ejemplo no funciona. Viene en Off por defecto.
Register_Global = On
| Por: Miguel Angel Alvarez | | 30/7/2003
|
Si, por cualquier error que no sabemos todavía, no se insertan correctamente los datos en la tabla (no se inserta nada o algún/os campos aparecen vacíos), lo mejor para saber donde está el error es imprimir en pantalla la sentencia SQL y así vemos si estamos creando una instrucción correcta o no.
La sentencia SQL se puede crear dentro de una variable PHP y luego imprimirla y ejecutarla. Algo como esto:
$ssql = "insert into clientes (nombre,telefono) values ('$nombre','$telefono')";
echo $ssql;
mysql_query($ssql);
- Si la sentencia es correcta, caso poco probable, podemos pensar que habrá algún problema en el sistema gestor de base de datos o en la conexión con la base de datos. Es muy probable que la sentencia parezca correcta pero que no lo esté, para asegurarnos podemos llevarla a algún programa distinto que utilicemos para trabajar directamente con la base de datos (como PhpMyAdmin o MyCC) y ejecutarla. El programa nos dirá si realmente es una sentencia correcta, con lo que tendría que insertar los datos, o una sentencia incorrecta, señalando alguna pista para la identificación del error.
- Si la sentencia no es correcta, que es seguro lo que está pasando, podemos localizar fácilmente en qué parte del código PHP está el error y subsanarlo.
| Por: Spiro Andreakis | | 31/5/2004
|
Hay que recordar que para cuestinoes de depuración también podemos utiliza la instrucción "die" que nos sirve como bandera para indicar la porción de código donde truena el programa.
Ejemplo:
$mysql_connect(equipo,usuario,pass) or die("hubo un error al conectar al servidor de BD!.");
Estube bastante tiempo para encontrar el problema asi que lo dejo para los demás.
el nombre de la tabla y el de los campos tiene que ir entre `acentos` y el de los valores entre 'comillas'.
lo descubri gracias al phpMyAdmin si no me volvía mono.
Si no poneis el codigo del archivo php que hace visualizar el dato que hemos añadido a la tabla va a ser un poco difivil comprobar que realmente se ha insertado =_=
Para todos aquellos q no encontraron la solución de x q no se insertan registros o estan vacios, aqui esta la solución:
Todo biene x q en el formulario utilizamos el metodo POST
<FORM METHOD="POST" ACTION="insertar.php">
entonces a la hora de insertar los valores de los campos falta hacer referencias en ellas, vemos como:
Antes:
mysql_db_query("ejemplo","insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
Debería ir:
mysql_db_query("ejemplo","insert into clientes (nombre,telefono) values ('".$_POST['nombre']."' , '".$_POST['telefono']."' )";
Saludos y Suerte.
| Por: Fran Hurtado | | 29/9/2005
|
Yo he colocado el siguiente codigo tras horas de prueba jeje y me ha funcionado...
<?
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
//Conexion con la base
mysql_connect("localhost","root","");
mysql_select_db("fran");
$sql = "INSERT INTO datos (nombre, apellidos) ";
$sql .= "VALUES ('$nombre', '$apellidos')";
mysql_query($sql);
?>
solo coloco el codigo php, por cierto utilizo PHP 5.0.5 y Apache 2.0.54 (win32)
Faltaría añadir algún mecanismo para evitar una doble inserción del mismo registro si, por alguna razón, se preciona el botón "actualizar" del navegador. Con MySQL, es definiendo como "único" uno de los campos, pero esto no siempre es posible en todos los casos. ¿cómo se haría usando php?
Yo tambien despues de horas de pruebas finalmente he podido resolver el problema.. me salian datos en blancos.. copiare el codigo para dar una mano a los que aun tienen problemas, ya que yo tambien me ayude de los post de los demas participantes.
Gracias
Este es mi codigo que finalmente me funcionó:
<?
$cod=$_POST['cod'];
$desc=$_POST['desc'];
$cant=$_POST['cant'];
$link = mysql_connect("localhost", "bdprueba", "pssprueba")
or die("Could not connect to database!");
mysql_select_db("dbp_customer")
or die("Could not select database!");
$query = "insert into `Prod` (`cod`,`desc`,`cant`) values
('$cod','$desc','$cant')";
$result = mysql_query($query)
or die("Query failed:$query");
?>
creo que tambien tuve el mismo problema que los demas a la hora de insertar los datos, quizas por las versiones de los programas, este es el codigo que yo utilize, espero sirva de ayuda
<?
$usr = "TuUsername";
$pwd = "TuPassword";
$db = "ejemplo";
$host = "localhost";
// connectando a la DB
$link = mysql_connect($host,$usr,$pwd);
mysql_select_db($db);
if (mysql_error()) { print "Database ERROR: " . mysql_error(); }
?>
<html>
<body><?
if ($_SERVER['REQUEST_METHOD'== "POST")
{
$nombre = addslashes($_POST["nombre"]);
$direccion = addslashes($_POST["direccion"]);
$telefono = addslashes($_POST["telefono"]);
$email = addslashes($_POST["email"]);
$sql= "INSERT INTO clientes";
$sql .="(nombre,direccion,telefono,email) VALUES";
$sql .="('$nombre','$direccion','$telefono','$email')";
$result = mysql_query($sql,$link);
if (mysql_error()) { print "Database ERROR: " . mysql_error(); }
echo " Datos recibidos.
";}
?>
x fin me salio, despues d ver uno de los post q hicieron, modifiq una sola parte y me funciono :)
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
$nombre=$_POST['nombre'];
$telefono=$_POST['telefono'];
//Conexion con la base
mysql_connect("localhost","su_user","su_pasword");
//selección de la base de datos con la que vamos a trabajar
mysql_select_db("ejemplo");
//Ejecucion de la sentencia SQL
mysql_db_query("ejemplo","insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
?>
<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><a href="lectura.php">Visualizar el contenido de la base</a></div>
</BODY>
</HTML>
Creo que tambien se puede simplificar mas de la siguiente manera, como lo he visto en las clases de PHP que veo a hora.
Primero se crea una pagina.php yo la llamo "conexion.php" que lleva el siguiente codigo:
<?
$conexion = mysql_connect("localhost", "root", "");
mysql_select_db("wagner", $conexion);
?>
ese es todo el codigo que debe llevar esa pagina con extención .php
para luego ser llamada desde otra pagina donde tendremos el resto del codigo, esto se hace, para simplificar la conexion a la BD ya que en varias paginas se estara abriendo y cerrando y es para no copiar el mismo codigo tantas veces.
luego para hacer la llamada se ejecuta con un include despues de <?, ejemplo:
<body>
<?
// aqui se hace el llamado al archivo y se establece la conexion con la BD
include "conexion.php";
//luego el resto del codigo
$sql="select * from datospersonales";
$consulta=@mysql_query($sql, $conexion);
?>
</body>
y porsupuesto para cerrar la conexion a la base de datos se hace con la sentencia
mysql_close($conexion); al final de todo el codigo php antes del </doby>
Realmente manifiesto mis sinceros agradecimientos y felicitaciones para todas aquellas personas que comparten y dejan en estos foros sus problemas con sus posibles respuestas, que han servido de gran ayuda a infinidades de personas. En mi caso, no fue necesario activar Register_GLOBALS en "ON", yo la tengo en "OFF", solo que tome en cuenta el comentario de Juanjo para que me pudiera funcionar. Mil gracias a Todos.
| Por: Carlos Gonzalez | | 21/6/2006
|
Un poco mejorado a la ultima actualizacion esta el siguiente codigo. Ojo estoy usando PHP 5.1.4 con Apache 2.0.5:
$link=mysql_connect("localhost","root","") or die ("Error al conectar!!");
mysql_select_db("ejemplo1") or die ("No es la base de datos");
$var1=$_POST[nombre];
$var2=$_POST[apellido];
$var3=$_POST[telefono];
$var4="INSERT INTO clientes VALUES ('$var1','$var2','$var3')";
$proob=mysql_query($var4) or die ("Query failed: $var4");
$link=mysql_close() or die("Error al tratar de cerrar!!");
Espero que les sirva de algo.
He aquí una buena solución para evitar que el usuario apriete el botón de envío dos veces en los formularios:
<form .....>
//elementos del formulario
//...
//...
<input type="submit" name="Envio" id="Envio" value="Texto Botón" onClick="getElementById('Envio').style.display='none'; getElementById('Envio2').style.display='block'; ">
<input type="submit" name="Envio2" id="Envio2" style="display: none" value="Texto botón enviando..." disabled>
</form>
Hola me han servido mucho sus ejemplos pero tengo un problema no logro borrar algun registro este es mi codigo ¿estoy haciendo algo mal?
<?
//Conexion con la base
mysql_connect("localhost","root","");
//Creamos la sentencia SQL y la ejecutamos
$sSQL="Delete From Clientes Where nombre='$nombre'";
mysql_db_query("ejemplo",$sSQL);
?>
encontre este scrip para evitar q el usuario apriete dos veces el boton enviar, pero tengo una duda...cual es el contenido de la funcion getElementById o es una funcion q viene con php????
<form .....>
//elementos del formulario
//...
//...
<input type="submit" name="Envio" id="Envio" value="Texto Botón" onClick="getElementById('Envio').style.display='none'; getElementById('Envio2').style.display='block'; ">
<input type="submit" name="Envio2" id="Envio2" style="display: none" value="Texto botón enviando..." disabled>
</form>
Hola a mi me resultó de la siguiente manera
<?
$cod=$_POST['cod'];
$desc=$_POST['desc'];
$cant=$_POST['cant'];
$link = mysql_connect("localhost", "bdprueba", "pssprueba")
or die("Could not connect to database!");
mysql_select_db("dbp_customer")
or die("Could not select database!");
$query = "insert into Prod (cod,desc,cant) values
('$cod','$desc','$cant')";
$result = mysql_query($query)
or die("Query failed:$query");
?>
a la amiga anterior le resultaba con los apóstrofes en la tabla y en los campos de la tabla, pero a mi me lanzaba el siguiente error:
Query failed:insert into `Prod` (`cod`,`desc`,`cant`) values
('$cod','$desc','$cant')
El ejemplo al final de la explicacion tira varios errores al ser activado.
excelente este ultimo comentario funciona correctamente me salia en blanco los datos pero usando los pst entra perfecto gracias
Hola que tal alguien me podria ayudar a hacer es te codigo mas SEGURO??? es muy inseguro ya que puedo ingresar datos como cualquier otra cosa, GRACIAS!
no he podido ingresar registros cuando le doy al boton de guardar me abre la pagina donde el condigo de insert y no he podido saber porque, alguien me puede colaboarar con esto y muchas gracais
Finalmente despues de buscar otros ejemplos y comparar, me di cuenta del error del codigo fuente de este ejemplo:
antes de ejecutar la siguiente sentencia:
mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
hay que hacer lo siguiente:
$nombre=$_POST[nombre];
$telefono=$_POST[telefono];
por q no nos olvidemos que las variables nombre y telefono las recivimos de un formulario mediante el metodo post.
osea que quedaria así:
$nombre=$_POST[nombre];
$telefono=$_POST[telefono];
mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
asi si que anda.
Saludos
RESPUESTA
Tienes razón, como tú dices funciona perfectamente, pero como está en el artículo en muchos casos también funciona, pero sólo si register_globals está activado.
Muchas gracias por el comentario, que será muy útil para los lectores.
-------------------------------------------------
Reseña:
PHP Version 5.2.0
MySQL 5.0
phpMyAdmin 2.6.0
-------------------------------------------------
Un foro tan útil y tan ventajoso como es este merece aportes válidos de sus usuarios. Por eso, yo también me auno con este pequeño aporte que funciona perfectamente con muchos más campos. Lo he resumido a solo dos campos para no alargar y complicar la visualización del ejemplo:
Fichero PHP con formulario:
<form method="post" action="adduser.php" form name="FormAddUser">
<label>Name:</span>
<input name="user_name" type="text" value=""/> </label>
<label>Lastname:</span>
<input name="user_lastname" type="text" value=""/>
</label>
<input name="Save Record" type="submit" class="input" id="Submit" value="Save Record"/></label></form>
Fichero PHP con código [adduser.php]:
<?php
$user_name = $_POST['user_name'];
$user_lastname = $_POST['user_lastname'];
mysql_connect("localhost","Usuario_BD","Clave_BD");
mysql_select_db("BD");
mysql_db_query("BD", "INSERT INTO `tabla` (`user_name`, `user_lastname`) VALUES ('".$_POST['user_name']."','".$_POST['user_lastname']."')");
?>
// El resto de información en HTML, etc., a partir de aquí....
Espero que os sirva.
yuri el codigo que pusisten me sirvio caleta! gracias
Pues... tengo una tabla de comics y otra con imagenes de cada comic.
Creo un form para añadir nombres de comic a la tabla y todo correcto.
Pero despues de insertar el nombre lo logico es poner las fotos que le corresponden en la otra tabla. Redirijo tras el primer insert al form donde introduzco el nombre de la imagen.
Pero... como obtengo el id del nombredelcomic que he puesto antes????
no vale mysql_insert_id porque quiero poner mas de una foto seguida y se pierde el valor...
¿por donde puedo seguir?
| Por: cesar elCHANA | | 24/7/2007
|
Jo! llevo 1 día entero intentando descubrir el error y simplemente era activar el "register"...
Gracias a todos por vuestra ayuda y dedicación. Estoy intentando aprender PHP con MySQL y sin duda este es el manual que mejor estoy entendiendo e interpretando.
Este ultimo ejemplo a mi si me funciono......saludos desde Chiapas, México
Tengo un problema al realizar el ejemplo, no me funciona. He revisado el error log del apache y me aparece el siguiente mensaje :"[error] PHP Fatal error: Call to undefined function mysql_connect() in C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs\bases\leer.php on line 10
es decir que la funcion mysql_connect no esta definida y no se como puedo definirla o en qué librería está. Espero que me puedan ayudar, gracias.
Yo estoy tratando de hacer un amb en php sin usar mysql.
En una pagina hay noticias (son archivos abiertos y creados por mi) y en la otra,segùn lo que eligio el usuario(agregar,eliminar o modificar) debo realizar la accion elegida SOLO de la noticia que eligio.La pregunta es como elimino parte del texto del archivo original(donde tengo todas las noticias juntas) y NO todo el archivo de noticias?, como modifico parte dell texto del archivo?como agrego texto al archivo?(para otra noticia)
muchas gracias
y q hago si tiene una llave foranea????????
en verdad no me lo acepta.
Hola a todos....
este código es el que le va a andar :
Formulario:
<HTML>
<HEAD>
<TITLE>Insertar.html</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Insertar un registro</h1>
<br>
<FORM METHOD="POST" ACTION="insertar.php">
Nombre<br>
<input type="TEXT" name="name">
<br>
Comentario<br>
<INPUT TYPE="TEXT" NAME="comment"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</div>
</BODY>
</HTML>
Insertar.php:
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
$name=$_POST['name'];
$comment=$_POST['comment'];
$link = mysql_connect("localhost", "root", "")
or die("Could not connect to database!");
mysql_select_db("aca pon tu base de datos")
or die("Could not select database!");
$query = "insert into `TU TABLA`(`name`,`comment`) values
('$name','$comment')";
$result = mysql_query($query)
or die("Query failed:$query");
?>
<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><a href="lectura.php">Visualizar el contenido de la base</a></div>
</BODY>
</HTML>
| nunca me salio
| 15/10/2009 |
no se que estoy haciendo mal, he probado de todas la formas y no me resulta ingresar datos. revice los nombres de todos lo campos,de la base,la pass de la base y no me ingresa :(
Por fin me salio, despues de mucho estres, por si a alguien le sirve...
formulario:
<HTML>
<HEAD>
<TITLE>Insertar.html</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Insertar un registro</h1>
<br>
<form action="http://localhost/base/Insertar.php" method="post">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Teléfono<br>
<INPUT TYPE="TEXT" NAME="telefono"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</div>
</BODY>
</HTML>
php...
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
$nombre=$_POST[nombre];
$telefono=$_POST[telefono];
$link = mysql_connect("localhost", "root", "")
or die("Could not connect to database!");
mysql_select_db("ejemplo")
or die("Could not select database!");
$query = "insert into `clientes` (`nombre`,`telefono`) values
('$nombre','$telefono')";
$result = mysql_query($query)
or die("Query failed:$query");
?>
<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><a href="lectura.php">Visualizar el contenido de la base</a></div>
</BODY>
</HTML>
gracias yuri me sirvio mucho tu codigo
edgar_v... | no se agregan datos
| 10/5/2010 |
hago el ejemplo como me lo indican en el manual para insertar un registro a la BD y no se agrega que estara pasando cosa como esta ahcen que las personas terminen desertando de la aplicacion sera que me falta alguna configuracion en el php por favor ayuda gracias de antemano
| COMO HAGO PARA ENVIAR VARIOS DATOS A UNA MISMA TABLA
| 09/6/2010 |
bueno! mi problema es: q tengo una tabla personal de esta forma relacionada con una tabla llamada hijos, pero lo q no se es q despues del primer insert sigue otro insert de la tabla hijos pero no se como hacer para ingresar varios hijos a la misma tabla a la misma vez..
$conexion=mysql_connect("localhost","root","12345") or print ("error en la conexion al motor de datos");
mysql_select_db("cruz_roja",$conexion) or print ("error en la seleccion de la base de datos");
// ESTA SON CAPTURAS DE MI PRIMER TABLA--
|CODPERSONA|NOMBRE|APELLIDO1|APELLIDO2|
---------------- ---------- ----------- ------------
$codpersona=$_POST['boxcod'];
$nombre=$_POST['boxname'];
$apellido1=$_POST['boxape1'];
$apellido2=$_POST['boxape2'];
// SIGUE OTRA TABLA EN LA MISMA CAPTURA (ESTA SE RELACIONA CON LA PRIMERA TABLA--)
(TABLA LLAMADA: HIJOS) esta lleva una llave foranea q es "codpersona".
CODPERSONA|CODIGO|NOMBRE|OCUPACION|
--------------- ---------- ---------- -------------
//HIJO 1.
$nombre$_POST['boxhijo1'];
$ocupacion$_POST['boxocup1'];
//HIJO2.
$nombre2$_POST['boxhijo2'];
$ocupacion2$_POST['boxocup2'];
//HIJO 3.
$nombre3$_POST['boxhijo3'];
$ocupacion3$_POST['boxocup3'];
INSERT....
Me pueden ayudar con este insert por favor... ayudenemen necesito esta explicacion gracias
My_kont... | PROBLEMAS PARA INSERTAR EN LA BD
| 29/12/2010 |
HOLA, EN PRIMERA LES FELICITO POR ESTA PAGINA Q ES MUY BUENA Y Q ASI SIGAN ESPERO APORTAR ALGO PROXIMAMENTE YA Q TMBN YO SOY UN LIDER DE UN GRUPO EN MI UNIVERSIDAD DE LO CUAL TNG A MI CARGO A 11 PERSONAS (HASTA AHORITA, JEJE) Y PUES APENAS ESTAMOS APRENDIENDO A PROGRAMAR EN PHP YO YA HABIA VISTO ALGO SOBRE EL DISEÑO CON "DW CS5" DE LO CUAL HE HECHO ALGUNAS COSAS; AHORITA YO ESTOY EN LA CREACION DE LA PAG. DEL GRUPO DE LO CUAL REQUIERO METER NOMBRES,APELLIDOS,CORREOS,ETC. OCUPE EL CODIGO OCUPANDO MIS PROPIOS DATOS DEL VIDEO ("Inserción de datos desde PHP a una tabla MySQL" ) DEL CUAL MUESTRAN COMO HACERLO PERO AQUI MI PROBLEMA ES Q NO ME AVISA Y APARTE NO SE INSERTA NADA EN LA BD, SOLO REGRESA AL INICIO COMO SI LO ACABARA DE ABRIR EL ARCHIVO.(YO OCUPO "XAMPP"). AQUI PONGO MI CODIGO: (TAMBIEN TNG DUDA EN EL $SSQL DONDE ESTAN LOS **, NO SE SI VALLA ASI YA Q ASI LO LOGRE APRECIAR EN EL VIDEO)
<?php
if(!$_post){
?>
<form metod="post" action= "insert2.php">
Nombre: <input type="text" name="nombre">
<br>
<br>
correo: <input type="text" name="correo">
<br>
<br>
contraseña: <input type="text" name="contraseña">
<br>
<br>
<input type="submit" value="enviar">
</form>
<?php
}else{
(**) $ssql = "insert into $prueba (nombre,correo,contraseña) value ('" . $_POST["nombre"] . "', ". $_POST["correo"]."', '". $_POST["contraseña"]."')";
$conexion = mysql_connect ("localhost","root","");
mysql_select_db ("php", $conexion);
if(mysql_query( (**) ssql,conexion)){
echo "sentencia de inserccion correcta";
}else
echo "no se inserto nada!!";
}
?>
DE ANTEMANO LES DOY LAS GRACIAS Y ESPERO SU AYUDA.
ATTE:EL SENSEI XD (ASI ME LLAMAN MIS CHICOS JEJE)
JoseLpa... | mysql_db_query
| 20/1/2012 |
Hola amigos, esta funcion ha sido declarada como obsoleta en php 5.3.0 y no se aconseja su utilizacion.
Lo ideal es utilizar mysql_select_db() y mysql_query().
La fuente de dicha informacion se encuentra en:
http://php.net/manual/es/function.mysql-db-query.php