【问题标题】:PHP Insert Multiple Checkbox Values Into One MySQL RecordPHP 将多个复选框值插入到一个 MySQL 记录中
【发布时间】:2014-10-31 15:48:26
【问题描述】:

我试图弄清楚如何将多个复选框值插入到一个 mysql 记录中。我在 sn-p 之后尝试了代码 sn-p。也许有人可以看看这个并告诉我我做错了什么?

注意:这仅适用于我的本地主机,因此安全性不是问题。

形式:

 <form action="newcar.php" method="post">
 Name: <input type="text" name="name"><br />
 Address: <input type="text" name="address"><br />
 City: <input type="text" name="city"><br />
 State: <select name="state">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="DC">District of Columbia</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
 </select><br />
 Zipcode: <input type="text" name="zipcode"><br />
 Company: <input type="text" name="company"><br />
 Work Number: <input type="text" name="work"><br />
 Cell Number: <input type="text" name="cell"><br />
 Fax Number: <input type="text" name="fax"><br />
 Insurance: <input type="text" name="insurance"><br />
 Certifications: 
 <input type="checkbox" name="certifications[]" value="FL" />FL
 <input type="checkbox" name="certifications[]" value="NC" />NC
 <input type="checkbox" name="certifications[]" value="NY" />NY
 <br />
 <input type="submit">
 </form>

还有php:

 <?php
 $con=mysqli_connect("localhost","root","PASSWORD","pilotcars");
 // Check connection
 if (mysqli_connect_errno()) {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }

 // escape variables for security
 $Name = mysqli_real_escape_string($con, $_POST['name']);
 $Address = mysqli_real_escape_string($con, $_POST['address']);
 $City = mysqli_real_escape_string($con, $_POST['city']);
 $State = mysqli_real_escape_string($con, $_POST['state']);
 $Zipcode = mysqli_real_escape_string($con, $_POST['zipcode']);
 $Company = mysqli_real_escape_string($con, $_POST['company']);
 $Work_Number = mysqli_real_escape_string($con, $_POST['work']);
 $Cell_Number = mysqli_real_escape_string($con, $_POST['cell']);
 $Fax_Number = mysqli_real_escape_string($con, $_POST['fax']);
 $Insurance = mysqli_real_escape_string($con, $_POST['insurance']);
 $Certifications = mysqli_real_escape_string($con, $_POST['certifications']);

 $certification=""; 
 $flag=0; 
 foreach($Certifications as $entry){ 
 $certification .= $entry."|"; 
 $flag=1; 
 } 
 if($flag==1){ 
 $certification=rtrim($certification); 
 } 

 $sql="INSERT INTO pilotcarlistings (Name, Address, City, State, Zipcode, Company, Work_Number, Cell_Number, Fax_Number, Insurance, Certifications)
 VALUES ('$Name', '$Address', '$City', '$State', '$Zipcode', '$Company', '$Work_Number', '$Cell_Number', '$Fax_Number', '$Insurance', '$certification')";

 if (!mysqli_query($con,$sql)) {
 die('Error: ' . mysqli_error($con));
 }
 echo "1 record added";
 echo "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">";

 mysqli_close($con);
 ?>

除了多个复选框外,所有这些都有效。我试图将值保存在单个 mysql 列中。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    试试:

    $certification = implode('|', $_POST['certifications']);
    

    【讨论】:

    • 我会把它放在哪里?
    【解决方案2】:

    你可以使用 implode 加入你的数组,然后当你想得到值时你可以爆炸它。

    请注意,有很多不同的方法可以做到这一点,但目前我能想到implode()

    例如我刚刚从一个数组中创建了一个字符串

    $string = array( 'a','b','c','d','e','f','g','h' );
    
    $string = implode( '|', $string );
    
    echo $string;
    

    运行 sn-p 并查看结果。在你的情况下,你可以做同样的事情,用分隔符加入你的数组,例如|或 - (随便)然后当你想处理它时,你可以分解这个字符串并创建一个数组

    也可以看看php.net关于implode和explode的信息

    Implode

    Explode

    祝你好运

    【讨论】:

    • 我将如何使用它来存储值?我对数据库非常陌生。
    • 嗯,我正在阅读它以试图弄清楚。此外,由于它与此相同的代码有关,可以说我想根据其中一个值提取记录(或多个)。我该怎么做?我希望能够按状态显示条目,有时使用类似 localhost/example.php?state=DisplayAllEntriesWithThisState
    • 看看我上面的例子。你想做的可以使用数组到字符串的转换来实现,反之亦然
    • 我也弄清楚了状态。我的大部分答案都在谷歌上,但输入正确的关键字需要很长时间。谢谢大家。
    猜你喜欢
    • 2015-02-19
    • 2012-08-20
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多