PHP将多个复选框值插入一个MySQL记录

时间:2014-09-07 04:29:32

标签: php mysql

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

注意:这仅适用于我的本地主机,因此不需要考虑安全性。

表格:

 <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列中。

2 个答案:

答案 0 :(得分:1)

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

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

例如我刚用数组做了一个字符串

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

$string = implode( '|', $string );

echo $string;

运行代码段并查看结果。在你的情况下,你可以做同样的事情加入你的数组与分隔符,例如|或 - (无论如何)然后当你想要处理它时,你可以爆炸这个字符串并创建一个数组

另请查看有关内爆和爆炸的php.net信息

Implode

Explode

祝你好运

答案 1 :(得分:0)

尝试:

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