cómo obtener valores de HTML select a php \ sql

Estoy tratando de pasar valores de una lista html form a una tabla SQL. He intentado varias cosas pero no puedo hacer que funcione.

HTML

   Volvo   Saab   Mercedes   Audi   

PHP

 $name = filter_var($_POST['name'],FILTER_SANITIZE_STRING); $email = filter_var($_POST['email'],FILTER_VALIDATE_EMAIL); $email = filter_var($email,FILTER_SANITIZE_EMAIL); $phone = filter_var($_POST['phone'],FILTER_SANITIZE_STRING); if (empty ($name)|| empty ($email) || empty ($phone) || !isset($select)) { return; } else { mysql_connect('localhost' , 'root' , ''); mysql_select_db('show_express'); $name = clean_inputs($name); $email = clean_inputs($email); $phone = clean_inputs ($phone); $sql = "INSERT INTO clients(id,name,email,phone,bands) "; $sql .= "VALUES('','$name','$email','$phone','$select')"; mysql_query($sql); if (mysql_affected_rows()) { echo true; } } function clean_inputs($input) { $clean = mysql_real_escape_string(stripcslashes($input)); return $clean; } 

En primer lugar, no tiene $select definido / instanciado en ningún lugar de su código. Entonces, ¿cómo puedes probarlo o insertarlo si no está presente?

En segundo lugar, supongo que el problema al que se enfrenta es que no tiene un atributo de name en su elemento de selección. ( Proporcione su código de formulario para verificar )

Entonces, deberías crear una selección que se vea así:

  

Lo que a su vez le permite acceder a seleccionar de esta manera:

 $select = filter_var($_POST['car'], FILTER_SANITIZE_STRING); 

Observe el atributo de name en la etiqueta ? Sí, necesitarás eso para acceder al valor.

Y como se indica en los comentarios, POR FAVOR evite el uso de las funciones mysql_* medida que la biblioteca se deprecie.

Look at this comment for more information as to why you should avoid them.


Y solo para puntos de cookie adicionales, aquí hay un ejemplo de cómo haría una inserción usando PDO. ( Tomado de esta respuesta )

 $db = new PDO("..."); $statement = $db->prepare("insert into clients(id,name,email,phone,bands) VALUES(NULL,:name, :email, :phone, :select)"); $statement->execute(array(':name' => $name, ':email' => $email, ':phone' => $phone, ':select' => $select)); $row = $statement->fetch(); // Use fetchAll() if you want all results, or just iterate over the statement, since it implements Iterator 

Está utilizando la variable $ select, pero no se está iniciando en ningún lado. Necesitas usar algo como esto.

  $select = filter_var($_POST['select'],FILTER_SANITIZE_STRING); 

La próxima vez publica tu script del lado del cliente.

Esto es algo similar a lo que uso:

 < ?php $db_host = 'localhost'; $db_name = 'show_express'; $db_user = 'root'; // you REALLY shouldn't use root for normal access $db_pass = ''; // you REALLY need to use a password $dbh = new PDO('mysql:host='.$db_host.';dbname='.$db_name, $db_user, $db_pass); if (!$dbh) { print "

Error connecting to database"; exit; } $q_insert = $dbh->prepare( "INSERT INTO clients (name, email, phone) VALUES (?,?,?);" ); if (!$q_insert) { $err = $q_insert->errorInfo(); print "

Error preparing query: ".$err[2]." [".$err[0]."]

"; exit; } $r = $q_insert->execute(array($_POST['name'], $_POST['email'], $_POST['phone'])); if (!$r) { $err = $q_insert->errorInfo(); print "

Error executing query: ".$err[2]." [".$err[0]."]

"; exit; } print "

Success!

"; ?>

Le sugiero que empiece a aprender a usar PDO en lugar de las funciones mysql_ . Tienen más sentido, el paradigma se alinea con otros idiomas y el conocimiento que obtienes será portátil.

Sé que este es solo un proyecto para principiantes, pero no use el usuario ‘raíz’, especialmente sin una contraseña. Cree un nuevo usuario con permisos solo para la base de datos ‘show_express’.

Al hacer preguntas, es útil si nos dice cómo no funciona. ¿Está recibiendo un mensaje de error? ¿Los datos terminan en la tabla pero no son correctos? Además, en esa línea, ¿cómo sabes que no funcionó? Es decir, ¿qué estás usando para verificar este código?