如何从HTML选择值到php \ sql [英] how to get values from HTML select to php\sql

查看:86
本文介绍了如何从HTML选择值到php \ sql的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将一个html表单< select> 列表中的值传递给一个SQL表。我已经尝试过几件事,但无法完成它。


$ b

HTML



 < select class =select-list> 
< option value =volvoclass =selectval>
沃尔沃
< / option>

< option value =saabclass =selectval>
Saab
< / option>

< option value =mercedesclass =selectval>
Mercedes
< / option>

< option value =audiclass =selectval>
奥迪
< /选项>
< / select>



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);
$ b $ 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 =插入客户端(ID,姓名,电子邮件,电话,乐队);
$ sql。=VALUES('','$ name','$ email','$ phone','$ select');
mysql_query($ sql);

if(mysql_affected_rows()){
echo true;
}



$ b函数clean_inputs($ input){
$ clean = mysql_real_escape_string(stripcslashes($ input));
返回$ clean;
}


解决方案

首先,在代码中的任何位置定义/实例化 $ select >。
那么,如果你不能测试它或插入它,那么你怎样才能测试它?

其次,我认为你面临的问题是你不是在您的select元素上有一个名称属性? (请提供您的表单代码来验证



所以你必须创建一个如下所示的select:

 < select name =car> 
< option value =audi> Audi< / option>
< option value =saab> Saab< / option>
.... etc
< / select>

反过来,您可以像下面这样访问选择:

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

请注意名称 c $ c>< select> 标签?是的,你需要它来访问该值。



正如评论中所述,避免使用作为库的折旧,mysql _ * 函数。



查看此评论以了解更多信息,以了解为什么应该避免它们。






仅仅为了额外的cookie点,下面是一个如何使用PDO进行插入的例子。 (取自此答案

  $ 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'=> $选择));
$ row = $ statement-> fetch(); //使用fetchAll()如果你想要所有的结果,或者只是迭代语句,因为它实现了Iterator


I'm trying to pass values from an html form <select> list to a SQL table. I've tried several things but can't get it to work.

HTML

<select class="select-list">
    <option value="volvo" class="selectval">
        Volvo
    </option>

    <option value="saab" class="selectval">
        Saab
    </option>

    <option value="mercedes" class="selectval">
        Mercedes
    </option>

    <option value="audi" class="selectval">
        Audi
    </option>
</select>

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;       
}

解决方案

Firstly, you don't have $select defined/instantiated anywhere in your code. So how can you test it or insert it if it isn't present?

Secondly, I presume that the issue you're facing is that you do not have a name attribute on your select element? (Please provide your form code to verify)

So you'd have to create a select that looks something like this:

<select name="car">
    <option value="audi">Audi</option>
    <option value="saab">Saab</option>
    ....etc
</select>

Which in turn allows you to access the select like this:

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

Notice the name attribute in the <select> tag? Yeah, you'll need that to access the value.

And as stated in the comments, PLEASE avoid using mysql_* functions as the library is depreciated.

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


And just for extra cookie points, here's an example of how you'd do an insert using PDO. (Taken from this answer)

$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

这篇关于如何从HTML选择值到php \ sql的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆