Pasos en un programa PHP para obtener / modificar tablas en una base de datos Mysql:
  • conectar con el servidor de BBDD
  • seleccionar la BBDD
  • enviar instruccion a BBDD
  • obtener y procesar los resultados
  • cerrar la conexión

valores devueltos por insert/delete/update:
  • numero de registros afectados
  • si negativo da error

Información de las sentencias en : http://www.php.net/manual



Ejemplos de funciones DB para seleccionar e insertar

<?php
//-------- data base functions ------------
 
//devuelve un array con el query realizado
function sqlselect($query)
{
    $array = array();
    $link =  mysql_connect(SERVERDB, SERVERDB_USER, SERVERDB_PASSWORD);
    if (!$link) {
        die('No pudo conectarse: ' . mysql_error());
    }
    $db_selected = mysql_select_db(DBNAME, $link);
    if (!$db_selected) {
        die ('Can\'t use mydb : ' . mysql_error());
    }
    $result = mysql_query($query);
    if (!$result) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $sql;
        die($message);
    }
    //$num_rows = mysql_num_rows($result);
    while ($row = mysql_fetch_assoc($result))
    {
        array_push($array,$row);
    }
    mysql_close($link);
    return $array;
}
 
//ejecuta un isert, update o delete
function sqlmodify($query)
{
    $link =  mysql_connect(SERVERDB, SERVERDB_USER, SERVERDB_PASSWORD);
    if (!$link) {
        die('No pudo conectarse: ' . mysql_error());
    }
    $db_selected = mysql_select_db(DBNAME, $link);
    if (!$db_selected) {
        die ('Can\'t use mydb : ' . mysql_error());
    }
 
    if (!mysql_query($query,$link))
    {
      die('Error insert: ' . mysql_error());
    }
    mysql_close($link);
    return;
}
 

estas funciones se pueden llamar desde estas otras funciones de usuario
//funcion leer en array multidimensional tabla de usuarios
function leerUsuarios()
{
    $sql = "**select * from usuarios**";
    return sqlselect($sql);
}
 
//funcion que inserta un registro con los valores d eun usuario
function insertarUsuario($usuario)
{
    $columns = "name,email,password,fecha,estado";
    $values = "'".$usuario['name']."','".$usuario['email']."','".$usuario['password']."','".$usuario['fecha']."','".$usuario['status']."'";
    $sql = "**insert into usuarios ($columns) values($values)**";
 
    sqlmodify($sql);
    return;
}
Otra manera mas actual es con mysqli:

//devuelve un array con el query realizado
function sqlselect($query)
{
    $array = array();
 
    $mysqli = new mysqli(SERVERDB, SERVERDB_USER, SERVERDB_PASSWORD,DBNAME);
    if (mysqli_connect_errno())
    {
        die('No pudo conectarse: ' . mysqli_connect_error());
    }
 
    $result = mysqli_query($mysqli, $query);
    if ($result)
    {
        $num_rows = mysqli_num_rows($result);
    }
 
    while ($row = mysqli_fetch_assoc($result))
    {
        array_push($array,$row);
    }
 
    mysqli_close($mysqli);
    return $array;
}

Errores que obtengo con el servidor de Arsys::

Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in C:\www\proyecto2jfg\application\models\dbfunctions.php on line 8

Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in C:\www\proyecto2jfg\application\models\dbfunctions.php on line 8

Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file in C:\www\proyecto2jfg\application\models\dbfunctions.php on line 8
No pudo conectarse: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file

Error: This means you are connecting to a mysql server using the new hash client while the server is setup to receive the old.
  • ello es debido a que el servidor MySql version 5 usa autenticación de contraseña con hash y tiene guardada la contraseña en formato antiguo.Hay que ejecutar en mySQL: SET PASSWORD FOR 'your_user'@'your_host' = PASSWORD ( 'your_old_password');