Supuesta tabla:
Código SQL:
Ver originalCREATE TABLE IF NOT EXISTS `persona` (
`dni` VARCHAR(8) NOT NULL,
`nombre` VARCHAR(32) NOT NULL,
`apellido` VARCHAR(32) NOT NULL,
`sexo` VARCHAR(16) NOT NULL,
`titulo` VARCHAR(32) NOT NULL,
`cv` VARCHAR(128) NOT NULL,
PRIMARY KEY (`dni`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
db.php
Código PHP:
<?php
$driver = 'mysql';
$host = 'localhost';
$database = 'tests';
$user = 'root';
$password = null;
return new PDO("$driver:host=$host;dbname=$database", $user, $password);
form.html
Código HTML:
<style>
label { display: block; }
</style>
<form method="post" action="index.php" enctype="multipart/form-data">
<h1>Datos</h1>
<fieldset>
<label for="dni">DNI</label>
<input id="dni" name="dni" type="text" required />
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" type="text" required />
<label for="apellido">Apellido</label>
<input id="apellido" name="apellido" type="text" required />
<label for="sexo">Sexo</label>
<select id="sexo" name="sexo">
<option value="femenino">Femenino</option>
<option value="masculino">Masculino</option>
</select>
<label for="titulo">Titulo</label>
<input id="titulo" name="titulo" type="text" required />
<label for="cv">Curriculum</label>
<input id="cv" name="cv" type="file" required />
</fieldset>
<button type="submit">Enviar</button>
</form>
index.php
Código PHP:
<?php
if ($_POST && $_FILES) {
if (copy($_FILES['cv']['tmp_name'], $file = "cv/{$_FILES['cv']['name']}")) {
$db = include 'db.php';
$st = $db->prepare('INSERT INTO persona VALUES(?, ?, ?, ?, ?, ?)');
$st->execute(array_values($_POST + [$file]));
}
else echo 'Ha ocurrido un error subiendo el Curriculum!';
}
else include 'form.php';
Espero te sirva, te recomiendo no sólo copiar y pegar el código, sino también aprovechar de las buenas prácticas que te estoy proporcionando, la mas importante en este ejemplo la separación de la lógica (index.php) de la presentación de los datos (form.php), incluso el acceso a esos datos (db.php).
Saludos.